1. Подключение к MySQL и выполнение запроса
Пример ниже показывает классический набор действий: подключение, запрос, получение всех строк и закрытие ресурсов.
import pymysql
# 1. Подключаемся к базе данных
connection = pymysql.connect(
host="localhost",
user="root",
password="secret",
database="shop",
charset="utf8mb4"
)
# 2. Создаём курсор
cursor = connection.cursor()
# 3. Выполняем SQL-запрос
cursor.execute("SELECT id, name, price FROM products")
# 4. Получаем все строки результата
rows = cursor.fetchall()
for row in rows:
print(row)
# 5. Закрываем курсор и соединение
cursor.close()
connection.close()
Что происходит:
pymysql.connect(...)устанавливает TCP-соединение с сервером MySQL и авторизуется.cursor()создаёт объект курсора для отправки команд.execute()передаёт SQL на сервер и возвращает количество затронутых строк.fetchall()забирает все строки ответа в виде списка кортежей.- Ресурсы закрываются в обратном порядке: сначала курсор, потом соединение.
2. Изменение данных в MySQL
Для INSERT, UPDATE и DELETE не забудьте зафиксировать транзакцию.
import pymysql
connection = pymysql.connect(host="localhost", user="root", password="secret", database="shop")
cursor = connection.cursor()
# Параметризованный запрос защищает от SQL-инъекций
cursor.execute(
"INSERT INTO products (name, price, stock) VALUES (%s, %s, %s)",
("Pen", 1.50, 100)
)
connection.commit() # фиксируем изменения
print("Добавлено строк:", cursor.rowcount)
cursor.close()
connection.close()
3. Работа с MongoDB
Пример решает задачу из домашнего задания: очистка коллекции, вставка товаров, увеличение цен и вывод результатов.
from pymongo import MongoClient
# 1. Подключаемся к локальному серверу MongoDB
client = MongoClient("mongodb://localhost:27017")
# 2. Выбираем базу и коллекцию
db = client["ich_edit"]
collection = db["products_pd_ivanov"]
# 3. Очищаем коллекцию
collection.delete_many({})
# 4. Добавляем 3 товара
products = [
{"name": "Pen", "price": 1.50, "stock": 100},
{"name": "Notebook", "price": 3.99, "stock": 50},
{"name": "Backpack", "price": 25.00, "stock": 20},
]
result = collection.insert_many(products)
print(f"{len(result.inserted_ids)} products inserted.")
# 5. Увеличиваем цены на 20%
update_result = collection.update_many({}, {"$mul": {"price": 1.2}})
print(f"Prices updated for {update_result.modified_count} products.")
# 6. Выводим обновлённые товары
print("Updated products:")
for product in collection.find({}, {"_id": 0, "name": 1, "price": 1}):
print(f"- {product['name']} — ${product['price']:.2f}")
# 7. Закрываем клиент
client.close()
Что происходит:
MongoClientоткрывает пул соединений с MongoDB.- Обращение к базе и коллекции по имени не требует предварительного создания.
delete_many({})удаляет все документы в коллекции.insert_many()вставляет список словарей за один вызов.update_many({}, {"$mul": {"price": 1.2}})умножает полеpriceкаждого документа на 1.2.find()возвращает курсор, по которому можно итерироваться.- Закрытие клиента освобождает ресурсы.
4. Как запустить в VS Code
- Убедитесь, что запущены серверы MySQL и/или MongoDB.
- Создайте файл
lesson87_example.pyв папке урока. - Скопируйте нужный пример и отредактируйте параметры подключения.
- Активируйте виртуальное окружение:
venv\Scripts\activate(Windows) илиsource venv/bin/activate(Mac/Linux). - Запустите:
python lesson87_example.py.