簡體   English   中英

try/except 塊是否會導致 commit_on_success 失敗

[英]Does try/except block causes commit_on_success to fail

@transection.commit_on_success
def recordIt(...)
   try:
       ....
       recordable = firstDataInsertionFunction(...)
       if recordable:
          myRec = SecondDataInsertion(.....)

    except:
       ....

至於commit_on_success ,如果我的第二次數據插入失敗,django 必須自動回滾,所以我的第一次數據插入也會回滾......

但這不起作用,第一次插入的數據被保存到數據庫中,而我在我的數據庫上看不到第二次插入的結果...... try/except 會導致 commit_on_success 失敗嗎? 因為正如文檔所說:

如果 function 成功返回,則 Django 將提交 function 內完成的所有工作。 但是,如果 function 引發異常,Django 將回滾事務。

並嘗試處理所有異常。 是我不工作的問題commit_on_success嗎?

首先,永遠不要做except: 這很糟糕,並且捕獲了太多,並且隱藏了錯誤。

是的,如果您處理異常,則commit_on_success不可能知道有錯誤。 如果您需要在異常上運行邏輯,請在之后重新引發它(只需raise ,不帶參數)。 或者自己回滾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM