Решение вопроса 1
Правильные пары:
pymysql.connect(...)→ c (подключает Python к базе данных)connection.cursor()→ b (создаёт объект для отправки SQL-запросов)cursor.execute(...)→ d (выполняет SQL-запрос)connection.close()→ a (закрывает соединение с базой данных)
Логика: сначала создаётся соединение, затем из него получают курсор, через курсор выполняют запрос, а в конце освобождают ресурсы.
Решение вопроса 2
Правильный порядок:
- b — подключиться к базе (
pymysql.connect(...)) - a — создать курсор (
connection.cursor()) - c — выполнить запрос (
cursor.execute(...)) - e — закрыть курсор (
cursor.close()) - d — закрыть соединение (
connection.close())
Логика: нельзя закрыть соединение раньше курсора, потому что курсор привязан к соединению.
Решение задачи 1. Версия MySQL
import pymysql
def get_mysql_version(config):
with pymysql.connect(**config) as connection:
with connection.cursor() as cursor:
cursor.execute("SELECT VERSION()")
version = cursor.fetchone()
return version[0]
if __name__ == "__main__":
db_config = {
"host": "localhost",
"user": "root",
"password": "secret",
}
print("Версия MySQL:", get_mysql_version(db_config))
Логика: используем SELECT VERSION() и fetchone(), чтобы получить одну строку с версией сервера. Контекстный менеджер with автоматически закрывает ресурсы.
Решение задачи 2. Добавление товаров в MongoDB
from pymongo import MongoClient
def insert_sample_products(collection):
collection.delete_many({})
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)
return len(result.inserted_ids)
if __name__ == "__main__":
with MongoClient("mongodb://localhost:27017") as client:
db = client["ich_edit"]
collection = db["products_pd_ivanov"]
inserted = insert_sample_products(collection)
print(f"{inserted} products inserted.")
Логика: сначала очищаем коллекцию, чтобы повторные запуски не дублировали товары. Затем вставляем список документов и печатаем количество вставленных ID.
Решение задачи 3. Увеличение цен
from pymongo import MongoClient
def update_prices(collection):
result = collection.update_many({}, {"$mul": {"price": 1.2}})
return result.modified_count
if __name__ == "__main__":
with MongoClient("mongodb://localhost:27017") as client:
db = client["ich_edit"]
collection = db["products_pd_ivanov"]
count = update_prices(collection)
print(f"Prices updated for {count} products.")
print("Updated products:")
for product in collection.find({}, {"_id": 0, "name": 1, "price": 1}):
print(f"- {product['name']} — ${product['price']:.2f}")
Логика: пустой фильтр {} в update_many означает «все документы». Оператор $mul умножает текущее значение price на 1.2, что эквивалентно увеличению на 20%. Для вывода используем find() с проекцией, чтобы не выводить служебное поле _id.