引用自 Django documentation with transaction.atomic():
with transaction.atomic():
原子性是数据库事务的定义属性。原子的 允许我们创建一个代码块,其中 数据库有保证。如果代码块成功 我猜:下面的代码不会被执行,因为一个常规的python异常引发了,对吗?
def my_view(request): with transaction.atomic(): # bunch of queries api_call() return JsonResponse('Done')
有没有保证 api_call() 如果内部发生数据库异常,则不会执行 transaction.atomic() 阻止?大泰铢
api_call()
transaction.atomic()
这是正确的。这不是Django特有的:数据库异常是一种 Exception ,如果 例外情况 在Python中引发(并且没有被捕获)后续代码将不会被执行。
Exception
例外情况