#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, поскольку автоматическая фиксация запускает новую с любой операцией и не мешает транзакциям, открытым другими соединениями