Задать вопрос

Работают ли транзакции в цикле в Django?

Есть функция обрабатывающая запрос. Структура приложения требует чтобы запись в бд осуществлялась в цикле в отдельной функции:

def responseFunction(request):
    for el in request.POST['elements']:
        #...
        saveToDb(el)

def saveToDb(el):
    #...
    enrty.save()
    return HttpResponse()


Возможно ли в таком случае осуществить все записи в цикле транзакцией?

В settings.MIDDLEWARE_CLASSES присутствует эта строчка: 'django.middleware.transaction.TransactionMiddleware', но транзакция не работает - если ошибка в одной из итераций, действия преодыдущих не откатываются
  • Вопрос задан
  • 2510 просмотров
Подписаться 4 Оценить 2 комментария
Решения вопроса 3
@kazmiruk
В настройках подключения к СУБД в джанге укажите 'ATOMIC_REQUESTS': True и все Ваши запросы будут оборачиваться в транзакции
Ответ написан
mututunus
@mututunus
Backend developer (Python, Golang)
Убедитесь что ваш MySQL поддерживает транзакии https://docs.djangoproject.com/en/dev/topics/db/tr...

Оберните функцию декоратором @transaction.atomic и все операции в ней будут проводиться в рамках одной транзакции.
Ответ написан
sim3x
@sim3x
Немного про мякотку работы с бд в 1,6-1,7
https://www.youtube.com/watch?v=AhmjPTrdgGM&list=U...

и переходи уже на 1,6 быстрее
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы