Карточка Middle Django ORM и N+1 спрашивают часто обновлено
transaction.atomic
Вопрос
Что делает transaction.atomic и что происходит при вложенных atomic?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Выполняет блок в транзакции: при исключении всё откатывается, при успехе коммитится. Вложенный atomic создаёт savepoint: ошибка внутри откатывает только его, если исключение поймано снаружи вложенного блока.
Ответ
Выполняет блок в транзакции: при исключении всё откатывается, при успехе коммитится. Вложенный atomic создаёт savepoint: ошибка внутри откатывает только его, если исключение поймано снаружи вложенного блока.
Разбор
Нельзя ловить исключение БД внутри atomic и продолжать запросы в том же блоке: транзакция в PostgreSQL в состоянии ошибки. Ловить нужно снаружи вложенного atomic.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.