Django 1.6提出了@transaction.atomic
,作为从1.5开始重新整理的事务管理的一部分。
我有一个函数,由Django管理命令调用,该命令又由cron调用,即在此情况下没有HTTP请求触发事务。代码片段:
from django.db import transaction
@transaction.commit_on_success
def my_function():
# code here
在上面的代码块中,commit_on_success
使用单个事务来完成my_function
中的所有工作。
将@transaction.commit_on_success
替换为@transaction.atomic
是否会产生相同的行为?@transaction.atomic
文档说明:
原子性是数据库事务的定义属性。原子操作允许我们创建一个代码块,在其中保证了数据库的原子性。如果成功完成代码块,则将更改提交到数据库。如果出现异常,则更改将回滚。
我认为它们产生相同的行为;是这样吗?