代码之家  ›  专栏  ›  技术社区  ›  MaxCore

Django:在事务之后继续执行代码。atomic的异常

  •  0
  • MaxCore  · 技术社区  · 8 年前

    引用自 Django documentation with transaction.atomic():

    原子性是数据库事务的定义属性。原子的 允许我们创建一个代码块,其中 数据库有保证。如果代码块成功 我猜:下面的代码不会被执行,因为一个常规的python异常引发了,对吗?

    def my_view(request):
    
        with transaction.atomic():
            # bunch of queries
    
        api_call()
    
        return JsonResponse('Done')
    

    有没有保证 api_call() 如果内部发生数据库异常,则不会执行 transaction.atomic() 阻止?大泰铢

    1 回复  |  直到 8 年前
        1
  •  1
  •   Kevin Christopher Henry    8 年前

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