【问题标题】:Does try/except block causes commit_on_success to failtry/except 块是否会导致 commit_on_success 失败
【发布时间】:2011-07-12 15:45:15
【问题描述】:
@transection.commit_on_success
def recordIt(...)
   try:
       ....
       recordable = firstDataInsertionFunction(...)
       if recordable:
          myRec = SecondDataInsertion(.....)

    except:
       ....

至于commit_on_success,如果我的第二次数据插入失败,django必须自动回滚,所以我的第一次数据插入也会被回滚……

但这不起作用,第一次插入的数据被保存到数据库中,而我在我的数据库上看不到第二次插入的结果...... try/except 是否会导致 commit_on_success 失败?因为正如文档所说:

如果函数成功返回,那么 Django 将提交此时函数内完成的所有工作。但是,如果函数引发异常,Django 将回滚事务。

并尝试处理所有异常。是我不工作的问题commit_on_success

【问题讨论】:

    标签: python django exception-handling


    【解决方案1】:

    首先,永远不要这样做except:。它只是很糟糕,并且捕获了太多,并且隐藏了错误。

    是的,如果您处理异常,那么commit_on_success 不可能知道有错误。如果您需要在异常上运行逻辑,请在之后重新引发它(只需 raise,不带参数)。或者自己回滚。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 2013-02-20
      • 2019-06-26
      相关资源
      最近更新 更多