Мой первый CRUD на Python


Требования

  • База данных (MySQL или MariaDB)
  • Docker
  • Python

В этом случае мы будем использовать docker для соединения с базой данных, для этого нам понадобится образ и использовать его в Docker.

На сайте docker hub найдите mariadb, выберите первый вариант, который является официальным образом, появится что-то похожее на изображение ниже.

Откройте терминал и выполните следующую команду для загрузки образа.

$ docker pull mariadb
Войти в полноэкранный режим Выйдите из полноэкранного режима

а затем создайте папку для проекта.

$ mkdir my-project
$ cd my-project
Войти в полноэкранный режим Выйдите из полноэкранного режима

В данном случае мы будем использовать docker compose для базы данных, мы могли бы поднять контейнер с Mariadb одной командой, но мне это не особо нравится, я предпочитаю использовать docker compose.

$ touch docker-compose.yml
$ nvim docker-compose.yml
Вход в полноэкранный режим Выйти из полноэкранного режима

Мы добавим следующие строки

version: "3.9"
services:
  chanchito:
    image: mariadb:10.6
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_PASSWORD=root
      - MYSQL_USER=roberto
Войти в полноэкранный режим Выйти из полноэкранного режима

Это параметры, которые нам нужны для базы данных.

  • имя изображения
  • версия
  • двери
  • переменные (пароль, имя пользователя)

Для получения дополнительной информации вы можете просмотреть документацию по Mariadb/MySQL, которые в основном одинаковы. В конце урока я размещу ссылки для вас!

После завершения сохраняем и выходим из файла. В вашем терминале, в папке проекта, который мы создали, находится файл, мы запустим его, чтобы поднять нашу базу данных.

Хорошо, теперь нам нужно создать наши «Таблицы» и «Схемы» в MariaDB.

Мы будем использовать MySQL Workbench для создания более интуитивным способом.

Мы создадим новое соединение, нажав на значок +.

Появится это окно, просто заполните значения, которые мы поместили в наш docker-compose.yml , нажмите на Test connection, если все в порядке, появится «предупреждающее» сообщение, как это, потому что мы используем Mariadb, а не MySQL. Нажмите Продолжить в любом случае!

Появится окно подтверждения.

Готово, теперь, чтобы создать нашу «Схему» и Таблицы, для создания нашей «Схемы» мы должны ввести.

CREATE SCHEMA `chanchitohappy`;
Войти в полноэкранный режим Выйти из полноэкранного режима

Нажимаем на радиус или нажимаем ctrl + Enter. Вскоре после этого вы можете нажать обновить, если созданная новая схема не появится в левом углу.

Теперь вы можете спросить себя «но разве мы не собираемся использовать python для создания?», и ответ — да, но… мы обычно не используем python для создания таблиц, мы используем python или другой язык для взаимодействия с базой данных.

Структура базы данных, по сути, уже создана

Создайте таблицу

CREATE TABLE `chanchitohappy`.`vendas` (
    `idProduct` INT NOT NULL AUTO_INCREMENT,
    `name_product` VARCHAR(45)NULL,
    `price` INT NULL,
    PRIMARY KEY(`idProduct`));
Войдите в полноэкранный режим Выйти из полноэкранного режима

Снова запускаем запрос, и наша таблица «продажи» будет создана.

Мы можем подтвердить это следующим образом.

Хорошо, теперь мы можем перейти в нашу любимую IDE, создать файл index.py и запустить наш код.

import mysql.connector

conection = mysql.connector.connect(
    host='localhost',
    user='root',
    password='root',
    database='chanchitohappy'
)

cursor = conexao.cursor()


cursor.close()
conexao.close()
Вход в полноэкранный режим Выход из полноэкранного режима

Мы создали соединение с базой данных, для этого нам нужны следующие параметры: хост, пользователь, пароль, база данных.

После этого, как и в любой системе, мы должны включить и выключить курсор и соединение.

Теперь каждая наша команда будет выполняться между cursor = conexao.cursor() и cursor.close()

CREATE

product_choosed = 'coca cola'
price_choosed = 5

# CREATE
command = f'INSERT INTO vendas (name_product, price) VALUES ("{product_choosed}", {price_choosed})'
cursor.execute(command)
conexao.commit()
Вход в полноэкранный режим Выйти из полноэкранного режима

ЧИТАТЬ

command = f'SELECT * FROM vendas'
cursor.execute(command)
resultado = cursor.fetchall()
print(resultado)
Войти в полноэкранный режим Выйти из полноэкранного режима

UPDATE

# UPDATE
product_choosed = 'coca cola'
price_choosed = 3

command = f'UPDATE vendas SET price = {price_choosed} WHERE name_product = "{product_choosed}"'
cursor.execute(command)
conexao.commit()
Войти в полноэкранный режим Выйти из полноэкранного режима

УДАЛИТЬ

product_choosed = 'coca cola'
command = f'DELETE FROM vendas WHERE name_product = "{product_choosed}"'
cursor.execute(command)
conexao.commit()
Войти в полноэкранный режим Выйти из полноэкранного режима

ОКОНЧАТЕЛЬНЫЙ РЕЗУЛЬТАТ

import mysql.connector

conexao = mysql.connector.connect(
    host='localhost',
    user='root',
    password='root',
    database='chanchitohappy',
)

cursor = conexao.cursor()

# CREATE
product_choosed = 'coca cola'
price_choosed = 5
command = f'INSERT INTO vendas (name_product, price) VALUES ("{product_choosed}", {price_choosed})'
cursor.execute(command)
conexao.commit()

# READ
command = f'SELECT * FROM vendas'
cursor.execute(command)
resultado = cursor.fetchall()
print(resultado)

# UPDATE
product_choosed = 'coca cola'
price_choosed = 3

command = f'UPDATE vendas SET price = {price_choosed} WHERE name_product = "{product_choosed}"'
cursor.execute(command)
conexao.commit()

# DELETE
product_choosed = 'coca cola'
command = f'DELETE FROM vendas WHERE name_product = "{product_choosed}"'
cursor.execute(command)
conexao.commit()

cursor.close()
conexao.close()
Войти в полноэкранный режим Выйти из полноэкранного режима

Не забывайте для каждого действия (выполнения) комментировать остальные, потому что это приведет к ошибке.

Мы могли бы добавить обработку ошибок, а также поместить каждое действие в функцию и вызывать их, когда это необходимо, но это основа CRUD в python, надеюсь, вы научились этому так же, как и я. Крепко обнимаю, до следующего раза!

Ссылки

https://hub.docker.com/_/mariadb

Оцените статью
devanswers.ru
Добавить комментарий