Важно: Код в лекции использует устаревший Legacy Query API (Model.query.all(), Model.query.get(id)) из SQLAlchemy 1.x / Flask-SQLAlchemy 2.x. В SQLAlchemy 2.x (Flask-SQLAlchemy 3.x) этот интерфейс устарел и будет удалён. Современный код — через db.session.execute(select(...)).
1. Получение всех записей
Из лекции (старое)
Современное (SQLAlchemy 2.x)
# Legacy Query API
questions = Question.query.all()
from sqlalchemy import select
questions = db.session.execute(
select(Question)
).scalars().all()
Почему изменилось: В SQLAlchemy 2.0 Model.query стал LegacyQuery и помечен как deprecated. select() — единственный рекомендуемый способ построения запросов.
2. Получение объекта по ID
Из лекции (старое)
Современное (SQLAlchemy 2.x)
# Legacy — ищет по первичному ключу
question = Question.query.get(id)
# Уже устарело — возвращает None без предупреждения
# даже если Session кэшировал другой объект
# Явно: поиск по primary key
question = db.session.get(Question, id)
# None если не найден
# Проверяет Session Identity Map — эффективно