💻 Практические примеры

⚡ Минимальный рабочий пример

import pymysql

connection = pymysql.connect(host="localhost", user="root", password="secret", database="shop")
cursor = connection.cursor()
cursor.execute("SELECT * FROM products")
for row in cursor.fetchall():
    print(row)
cursor.close()
connection.close()

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()

Что происходит:

  1. pymysql.connect(...) устанавливает TCP-соединение с сервером MySQL и авторизуется.
  2. cursor() создаёт объект курсора для отправки команд.
  3. execute() передаёт SQL на сервер и возвращает количество затронутых строк.
  4. fetchall() забирает все строки ответа в виде списка кортежей.
  5. Ресурсы закрываются в обратном порядке: сначала курсор, потом соединение.

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()

Что происходит:

  1. MongoClient открывает пул соединений с MongoDB.
  2. Обращение к базе и коллекции по имени не требует предварительного создания.
  3. delete_many({}) удаляет все документы в коллекции.
  4. insert_many() вставляет список словарей за один вызов.
  5. update_many({}, {"$mul": {"price": 1.2}}) умножает поле price каждого документа на 1.2.
  6. find() возвращает курсор, по которому можно итерироваться.
  7. Закрытие клиента освобождает ресурсы.

4. Как запустить в VS Code

  1. Убедитесь, что запущены серверы MySQL и/или MongoDB.
  2. Создайте файл lesson87_example.py в папке урока.
  3. Скопируйте нужный пример и отредактируйте параметры подключения.
  4. Активируйте виртуальное окружение: venv\Scripts\activate (Windows) или source venv/bin/activate (Mac/Linux).
  5. Запустите: python lesson87_example.py.