【问题标题】:Django: continuing code execution after transaction.atomic's ExceptionDjango:在 transaction.atomic 的异常之后继续执行代码
【发布时间】:2018-09-20 19:31:50
【问题描述】:

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

来自Django documentation 的关于with transaction.atomic(): 的引述

原子性是数据库事务的定义属性。原子 允许我们创建一个代码块,其中的原子性 数据库有保障。如果代码块成功 完成后,更改将提交到数据库。如果有一个 异常,更改将回滚。 我的猜测:并且下面的代码不会被执行,因为引发了一个常规的 python 异常,对吧?

例如:

def my_view(request):

    with transaction.atomic():
        # bunch of queries

    api_call()

    return JsonResponse('Done')

如果transaction.atomic()块内发生数据库异常,是否保证api_call()不会被执行?大赞

【问题讨论】:

    标签: python django database atomic


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多