[英]Calling transaction.commit() inside commit_on_success block in Django
[英]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.