Выбор ответа Middle SQLAlchemy 2.0 обновлено
expire_on_commit
Вопрос
Что делает настройка expire_on_commit=True (по умолчанию)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: После коммита атрибуты устаревают и перечитываются при обращении. После коммита данные в базе могли измениться другими транзакциями, поэтому SQLAlchemy по умолчанию сбрасывает загруженные значения.
Варианты ответа
- После коммита атрибуты устаревают и перечитываются при обращенииправильный ответ
- Удаляет объекты из базы после коммита, если они временные
- Делает коммит автоматически через заданное время бездействия
- Отключает транзакции и переводит сессию в режим autocommit
Разбор
После коммита данные в базе могли измениться другими транзакциями, поэтому SQLAlchemy по умолчанию сбрасывает загруженные значения. Обращение к атрибуту вызовет новый запрос, а если сессия уже закрыта, получится DetachedInstanceError, в async ещё и MissingGreenlet. В веб-приложениях и async часто ставят expire_on_commit=False.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.