Пропуски Middle SQLAlchemy 2.0 обновлено
Запрос с eager-загрузкой в async
Вопрос
Допишите запрос: пользователи с их заказами (коллекция) одним дополнительным запросом, в асинхронной сессии.
stmt = (
__(1)__(User)
.where(User.is_active.is_(True))
.options(__(2)__(User.orders))
)
users = (await session.__(3)__(stmt)).all()
Попробуйте сами
Заполните пропуски по номерам.
1
2
3
Показать ответ и разбор
Коротко
select(User) строит запрос, selectinload загружает коллекцию вторым запросом с IN, а session.scalars возвращает объекты User. В async ленивая загрузка не работает, поэтому связь грузится заранее.
Что в пропусках
1
select
2
selectinload
3
scalars
Разбор
select(User) строит запрос, selectinload загружает коллекцию вторым запросом с IN, а session.scalars возвращает объекты User. В async ленивая загрузка не работает, поэтому связь грузится заранее.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.