Как обрабатываются взаимозависимые вызовы db в transaction.atomic
У меня есть два вызова БД внутри transaction.atomic()
Коды выборки
with transaction.atomic():
result1, created = SomeModel.objects.get_or_create(**somedata)
if not created:
flag = SomeOtherModel.objects.filter(somemodel=result1).exists()
if flag:
result1.some_attr = value1 if flag else value2
result1.save()
AFAIK о transaction.atomic, когда мои питоновские коды не вызывают исключений, поэтому все вызовы БД будут зафиксированы на БД. Если внутри блока возникло исключение, ни одна операция с БД не будет зафиксирована в БД.
Как обрабатывается эта вещь, когда вызов DB одного используется в логике python для выполнения других операций с DB? Не нашел этого вида в документации, если есть хороший источник, пожалуйста, укажите его.
<
Вернуться на верх
Вот хорошее сообщение на StackOverflow, которое я нашел, с некоторыми хорошими разговорами вокруг этого: Транзакции в базе данных - как они работают?