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

可能这是一个非常愚蠢的问题,但我正在研究的部分非常重要,所以我想检查两次)


引用来自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()块内,是否有保证不会执行?大谢谢


莫回无
浏览 134回答 1
1回答

隔江千里

这是正确的。这不是特定于 Django 的:数据库异常是一种Exception,如果Exception在 Python 中引发(并且没有被捕获),则不会执行后续代码。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python