可能这是一个非常愚蠢的问题,但我正在研究的部分非常重要,所以我想检查两次)引用来自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 回答
![?](http://img1.sycdn.imooc.com/54584ee0000179f302200220-100-100.jpg)
隔江千里
TA贡献1906条经验 获得超10个赞
这是正确的。这不是特定于 Django 的:数据库异常是一种Exception
,如果Exception
在 Python 中引发(并且没有被捕获),则不会执行后续代码。
添加回答
举报
0/150
提交
取消