Django4.0 數(shù)據(jù)庫事務(wù)-自動提交

2022-03-16 17:37 更新

為什么 Django 使用自動提交

在 SQL 規(guī)范中,每一個 SQL 查詢會啟動事務(wù),除非一個事務(wù)已經(jīng)處于活動狀態(tài)。然后必須顯式地提交或回滾此事務(wù)。
這對開發(fā)者來說一直很頭疼。為了減輕這個問題,大部分?jǐn)?shù)據(jù)庫提供了自動提交模式。當(dāng)打開了自動提交,并且沒有事務(wù)活動時,每一個 SQL 查詢將被包含在自己的事務(wù)中。換句話說,每一個這種查詢不僅會啟動一個事務(wù),而且事務(wù)也會被自動提交或回滾,這取決于查詢是否成功。
PEP 249 (Python 數(shù)據(jù)庫接口規(guī)范 v2.0)要求自動提交在初始時是關(guān)閉的。Django 會覆蓋這個默認(rèn)值并開啟自動提交。

停用事務(wù)管理

你可以通過設(shè)置 ?AUTOCOMMIT ?為 ?False ?來對數(shù)據(jù)庫完全禁用 Django 事務(wù)管理。如果你這么做了,Django 將不會啟動自動提交,而且不會執(zhí)行任何提交。你將獲得底層數(shù)據(jù)庫的常規(guī)行為。
這要求你顯式地提交每一個事務(wù),即使它們通過 Django 或第三方庫啟動。因此,這適用于當(dāng)你想運(yùn)行事務(wù)控制中間件或做一些非常奇怪的事情的情形。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號