Безопасно ли открывать транзакцию с необработанным SQL в Django

#python #django #postgresql

#python #django #postgresql

Вопрос:

С настройками по умолчанию в Django (версия 3.1) безопасно делать:

 with connection.cursor() as cursor:
    cursor.execute("BEGIN")
    
# Some SQL operations

commit_or_rollback = "COMMIT" if success else "ROLLBACK"
with connection.cursor() as cursor:
    cursor.execute(commit_or_rollback)
  

Или я должен установить автокоммит False с помощью метода set_autocommit до того, как автокоммит Django закроет транзакции? Или автоматическая фиксация изолирована, и с моим кодом проблем не будет?

На случай, если вы спрашиваете, почему я использую необработанный SQL для транзакций: я пытался использовать транзакции вручную, как указано в документах, но у него были некоторые проблемы с многопроцессорной средой, поэтому мне пришлось использовать необработанные запросы

Ответ №1:

Хорошо, я больше читал, тестировал в своем проекте и просматривал запросы, выполняемые Django, в журналах базы данных. Кажется, безопасно использовать транзакции с необработанным SQL, поскольку автоматическая фиксация запускает новую с любой операцией и не мешает транзакциям, открытым другими соединениями