Что такое Unit of Work в SQLAlchemy и на каком этапе сессия реально отправляет SQL-запросы в базу?

Unit of Work отслеживает новые, изменённые и удалённые ORM-объекты и отправляет их изменения при flush. commit завершает транзакцию, но SQL может выполняться значительно раньше.

Короткий ответ

Что ответить на собеседовании

Unit of Work отслеживает новые, изменённые и удалённые ORM-объекты и отправляет их изменения при flush. commit завершает транзакцию, но SQL может выполняться значительно раньше.

Подробный разбор

Ответ с пояснениями

Unit of Work отслеживает новые, изменённые и удалённые ORM-объекты и отправляет их изменения при flush. commit завершает транзакцию, но SQL может выполняться значительно раньше.

Вызов add обычно лишь регистрирует объект. flush отправляет DML; он может быть явным, автоматическим перед определёнными запросами и выполняется перед commit при наличии изменений. SELECT и lazy loading также обращаются к БД до commit. После ошибки flush сессию нужно привести в корректное состояние через rollback. Flush не равен окончательной фиксации данных.

Источник: docs.sqlalchemy.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее