🔖 Справочник: SQL, PyMySQL, PyMongo, Counter

📁 Блок: Практикум / Базы данных ⏱️ Время изучения: ~120 мин 🎯 Сложность: Средняя
#lower #find #sort

⚡ Кратко: главные команды

  • UPDATE table SET column = value WHERE condition — изменить существующие строки.
  • INSERT INTO table (cols) VALUES (vals) — добавить строку.
  • FOREIGN KEY (col) REFERENCES table(col) — связь между таблицами.
  • CURDATE() — текущая дата в MySQL.
  • PyMySQL: connect(...), cursor(), execute(sql, params), commit(), fetchone(), fetchall().
  • PyMongo: MongoClient, insert_one, find, aggregate([{"$group": ...}]).
  • Counter: Counter(iterable).most_common(n) — топ-n элементов.

🔖 Справочник по SQL

КомандаОписаниеПример
UPDATE ... SET ... WHERE ... Изменяет существующие строки UPDATE books SET stock = stock - 1 WHERE id = 5
INSERT INTO table (cols) VALUES (vals) Вставляет новую строку INSERT INTO purchases (user_id, book_id, quantity, purchase_date) VALUES (1, 5, 2, CURDATE())
FOREIGN KEY (col) REFERENCES tbl(col) Связь с первичным ключом другой таблицы FOREIGN KEY (user_id) REFERENCES users(id)
CURDATE() Текущая дата MySQL SELECT CURDATE()
LOWER(title) LIKE %s Регистронезависимый поиск с параметром WHERE LOWER(title) LIKE %s с ("%war%",)

🔖 Справочник по PyMySQL

Метод / функцияОписаниеПример
pymysql.connect(...) Создаёт соединение с MySQL connection = pymysql.connect(host="...", user="...", password="...", database="...")
connection.cursor() Возвращает курсор для выполнения запросов with connection.cursor() as cursor:
cursor.execute(sql, params) Выполняет параметризованный запрос cursor.execute("SELECT * FROM books WHERE id = %s", (book_id,))
cursor.fetchone() Возвращает одну строку или None row = cursor.fetchone()
cursor.fetchall() Возвращает список всех строк rows = cursor.fetchall()
connection.commit() Сохраняет изменения в базе connection.commit()

🔖 Справочник по PyMongo

МетодОписаниеПример
MongoClient(uri) Подключение к MongoDB client = MongoClient("mongodb://user:pass@host/...")
client["db"]["collection"] Выбор базы и коллекции col = client["ich_edit"]["bookstore_logs_searches"]
collection.insert_one(doc) Вставляет один документ col.insert_one({"query": "1984"})
collection.find(filter) Возвращает курсор документов col.find({"query": {"$exists": True}})
collection.aggregate(pipeline) Выполняет пайплайн агрегации col.aggregate([{"$group": {"_id": "$query", "count": {"$sum": 1}}}])

Частые операторы агрегации

ОператорЗначениеПример
$groupГруппировка по полю с агрегатной функцией{"$group": {"_id": "$query", "count": {"$sum": 1}}}
$sumСумма значений в группе{"$sum": 1} — счётчик документов
$sortСортировка результатов{"$sort": {"count": -1}}
$limitОграничение числа результатов{"$limit": 10}
$toLowerПриведение строки к нижнему регистру{"$toLower": "$query"}
$matchФильтрация документов{"$match": {"query": {"$exists": True}}}

🔖 Справочник по collections.Counter

КонструкцияОписаниеПример
Counter(iterable) Считает частоту элементов Counter(["a", "b", "a"])Counter({'a': 2, 'b': 1})
.most_common(n) Возвращает n самых частых элементов Counter(...).most_common(10)
.elements() Разворачивает счётчики обратно в элементы list(Counter({"a": 2}).elements())["a", "a"]