Урок 10. Практикум 3: SQLAlchemy-запросы

📁 Блок: Flask ⏱️ Время изучения: ~60 мин 🎯 Сложность: Средняя
#sqlalchemy #запросы #практикум #crud #join #агрегации

⚡ Кратко: Практикум 3 — SQLAlchemy-запросы (20 задач)

Практикум на закрепление CRUD-запросов в SQLAlchemy 2.x через модели User и Address. Новый материал не вводится — только практика.

  • Базовые запросы (1–10): поиск по имени, фильтрация по возрасту, обновление, добавление, удаление, сортировка, limit, get по id, проверка существования.
  • Агрегации (11–15): avg, max/min, group_by, having, subquery (подзапрос).
  • Связи и JOIN (16–20): join, outerjoin, group_by с join, фильтрация по связи, обновление связанного объекта.
  • Ключевые конструкции: session.query(), filter(), filter_by(), func.avg/max/min/count, .join(), .outerjoin(), .group_by(), .having(), .subquery()

Топ-3 ошибки: 1) Забыть session.commit() после изменений. 2) Использовать filter(Address.id == None) вместо is_(None). 3) Не импортировать func из sqlalchemy.

📖 О чём этот урок

Урок 10 — это практикум на закрепление SQLAlchemy-запросов. Все 20 задач используют две модели: User (id, name, age) и Address (id, description, user_id). Задачи охватывают полный спектр операций — от простого поиска до агрегаций и JOIN-запросов.

Если что-то кажется незнакомым — загляни в Урок 07 (SQLAlchemy — запросы) или Урок 05 (SQLAlchemy — модели).

Что закрепляем

  • CRUD: create, read (filter, get), update, delete
  • Сортировка (order_by), ограничение (limit)
  • Проверка существования (exists())
  • Агрегации: func.avg, func.max, func.min, func.count
  • Группировка (group_by) и фильтрация групп (having)
  • Подзапросы (subquery())
  • Связи: join, outerjoin, filter по связанной таблице

📚 Что повторить перед изучением

🎯 Что изучать дальше