Выбор ответа Junior SQLAlchemy 2.0 обновлено

Запрос в стиле SQLAlchemy 2.0

Вопрос

Как в стиле SQLAlchemy 2.0 получить список активных пользователей?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: session.scalars(select(User).where(User.isactive)).all(). В 2.0 запрос строится конструкцией select(), выполняется через session.execute или session.scalars, а scalars разворачивает строки в объекты User. session.query работает, но это legacy-стиль. objects.filter это Django ORM, а строка SQL без…

Варианты ответа

  1. session.scalars(select(User).where(User.is_active)).all()правильный ответ
  2. User.objects.filter(is_active=True)
  3. session.query(User).filter_by(is_active=True).all() единственный способ
  4. select * from User where is_active

Разбор

В 2.0 запрос строится конструкцией select(), выполняется через session.execute или session.scalars, а scalars разворачивает строки в объекты User. session.query работает, но это legacy-стиль. objects.filter это Django ORM, а строка SQL без text() не выполнится.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме