1. Этапы работы с MySQL
Чтобы Python смог «поговорить» с базой данных, нужно выполнить несколько шагов. Каждый из них отвечает за свою задачу.
| Конструкция | Описание | Вариант ответа |
|---|---|---|
pymysql.connect(...) |
Создаёт объект соединения между Python и сервером MySQL. В параметрах передаются адрес сервера, логин, пароль и имя базы. | c — подключает Python к базе данных |
connection.cursor() |
Создаёт курсор — посредника, который умеет отправлять SQL-запросы и забирать результаты. | b — создаёт объект для отправки SQL-запросов |
cursor.execute(...) |
Отправляет SQL-запрос на сервер. Если запрос возвращает данные, их можно получить методами fetch*. |
d — выполняет SQL-запрос |
connection.close() |
Закрывает соединение и освобождает ресурсы сервера. Курсор перед этим тоже нужно закрыть. | a — закрывает соединение с базой данных |
2. Правильный порядок действий
Частая задача на занятии — восстановить правильную последовательность:
- b — подключиться к базе (
pymysql.connect(...)). - a — создать курсор (
connection.cursor()). - c — выполнить запрос (
cursor.execute(...)). - e — закрыть курсор (
cursor.close()). - 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 изначально число. Если оно строка, умножение может дать неожиданный результат.