为了账号安全,请及时绑定邮箱和手机立即绑定

Django:在 transaction.atomic 的异常之后继续执行代码

Django:在 transaction.atomic 的异常之后继续执行代码

莫回无 2021-06-09 17:49:43
可能这是一个非常愚蠢的问题,但我正在研究的部分非常重要,所以我想检查两次)引用来自Django 文档的关于with transaction.atomic():原子性是数据库事务的定义属性。atomic 允许我们创建一个代码块,在其中保证数据库的原子性。如果代码块成功完成,更改将提交到数据库。如果出现异常,则回滚更改。我的猜测:下面的代码不会被执行,因为引发了一个常规的 python 异常,对吗?例如:def my_view(request):    with transaction.atomic():        # bunch of queries    api_call()    return JsonResponse('Done')api_call()如果数据库异常发生在transaction.atomic()块内,是否有保证不会执行?大谢谢
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

这是正确的。这不是特定于 Django 的:数据库异常是一种Exception,如果Exception在 Python 中引发(并且没有被捕获),则不会执行后续代码。


查看完整回答
反对 回复 2021-06-22
  • 1 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信