繁体   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