Урок 10. Практикум 3: SQLAlchemy-запросы
⚡ Кратко: Практикум 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по связанной таблице
📚 Что повторить перед изучением
- ← Урок 09: Работа над проектом (Flask)
- Урок 07: SQLAlchemy — запросы, CRUD
- Урок 05: SQLAlchemy — модели и поля
- Знание SQL: SELECT, WHERE, JOIN, GROUP BY, HAVING
🎯 Что изучать дальше
- → Урок 11: Работа над проектом Flask (продолжение)
- Flask-Migrate (Alembic): управление схемой БД через миграции
- Полная интеграция Pydantic v2 с Flask-SQLAlchemy
- Тестирование Flask: pytest + test_client