📖 Теория: повторение MySQL и MongoDB

⚡ Кратко

Работа с MySQL из Python строится по цепочке: соединение → курсор → выполнение запроса → получение результата → закрытие курсора → закрытие соединения. Для INSERT/UPDATE/DELETE нужен commit(). В MongoDB используются методы коллекции: insert_many(), update_many(), find().

  • pymysql.connect(...) — создаёт соединение.
  • connection.cursor() — создаёт объект для SQL-запросов.
  • cursor.execute(...) — выполняет запрос.
  • connection.close() — закрывает соединение.

1. Этапы работы с MySQL

Чтобы Python смог «поговорить» с базой данных, нужно выполнить несколько шагов. Каждый из них отвечает за свою задачу.

КонструкцияОписаниеВариант ответа
pymysql.connect(...) Создаёт объект соединения между Python и сервером MySQL. В параметрах передаются адрес сервера, логин, пароль и имя базы. c — подключает Python к базе данных
connection.cursor() Создаёт курсор — посредника, который умеет отправлять SQL-запросы и забирать результаты. b — создаёт объект для отправки SQL-запросов
cursor.execute(...) Отправляет SQL-запрос на сервер. Если запрос возвращает данные, их можно получить методами fetch*. d — выполняет SQL-запрос
connection.close() Закрывает соединение и освобождает ресурсы сервера. Курсор перед этим тоже нужно закрыть. a — закрывает соединение с базой данных

2. Правильный порядок действий

Частая задача на занятии — восстановить правильную последовательность:

  1. b — подключиться к базе (pymysql.connect(...)).
  2. a — создать курсор (connection.cursor()).
  3. c — выполнить запрос (cursor.execute(...)).
  4. e — закрыть курсор (cursor.close()).
  5. d — закрыть соединение (connection.close()).
💡 На заметку: курсор всегда закрывается раньше, чем соединение. Соединение — это «транспорт», а курсор — «пассажир»: нельзя убрать дорогу, пока на ней кто-то ещё находится.

3. Когда нужен commit()

MySQL по умолчанию работает в режиме транзакций: изменения не попадают в базу сразу, а ждут подтверждения. Поэтому после INSERT, UPDATE и DELETE обязательно вызывайте connection.commit().

connection = pymysql.connect(...)
cursor = connection.cursor()
cursor.execute("UPDATE products SET price = price * 1.2")
connection.commit()  # без этой строки изменения не сохранятся
cursor.close()
connection.close()

4. Разбор домашнего задания по MongoDB

В домашнем задании нужно поработать с коллекцией товаров в базе ich_edit.

Задание 1. Добавление товаров

  • Подключиться к MongoDB.
  • Выбрать базу ich_edit и коллекцию products_<your_group>_<your_full_name>.
  • Очистить коллекцию перед началом: collection.delete_many({}).
  • Сформировать список из трёх документов с полями name, price, stock.
  • Вставить документы методом insert_many() и вывести количество вставленных записей.

Задание 2. Увеличение цен

  • Увеличить цену всех товаров на 20%. Для этого подойдёт оператор $mul или $set с выражением price * 1.2.
  • Вывести количество обновлённых документов (modified_count).
  • Вывести список всех товаров с новыми ценами.
⚠️ Важно: при использовании $mul убедитесь, что поле price изначально число. Если оно строка, умножение может дать неожиданный результат.