Unit of Work отслеживает новые, изменённые и удалённые ORM-объекты и отправляет их изменения при flush. commit завершает транзакцию, но SQL может выполняться значительно раньше.
Что такое Unit of Work в SQLAlchemy и на каком этапе сессия реально отправляет 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.