Встречается на собеседованиях • сегодня
Как в Django ORM использовать транзакции
В Django ORM транзакции используются для обеспечения атомарности операций с БД. Основные способы:
- Декоратор
@transaction.atomic:
python
from django.db import transaction
@transaction.atomic
def update_data():
# Весь код внутри функции выполняется в одной транзакции
Model.objects.update(field='value')
if error_condition:
raise Exception() # автоматический откат- Контекстный менеджер:
python
with transaction.atomic():
# Операции внутри блока атомарны
obj = Model.objects.select_for_update().get(id=1)
obj.field = 'new_value'
obj.save()- Вложенные транзакции (savepoints):
python
with transaction.atomic():
try:
with transaction.atomic():
# Внутренняя транзакция
raise DatabaseError
except DatabaseError:
pass # Откатывается только внутренний блокКлючевые моменты:
- По умолчанию Django использует autocommit для каждого запроса
atomic()создает точку сохранения (savepoint) для вложенных транзакций- Для пессимистичных блокировок используйте
select_for_update() - Ошибки вызывают автоматический откат транзакции

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы