• Django默认是自动提交的
  • 使用TestCase的每个test用例都是事务性的。如果不想这样,可以使用替代
  • Django自动保证delete()/update()等包含多个查询操作的完整性
  • Django事务性控制会有一定的性能损耗

 

在settings.py设置:



DATABASES = {
‘default‘: {
……
‘ATOMIC_REQUESTS‘: True,
}
}


同一个http请求对应的所有sql都放在一个事务中执行(要么所有都成功,要么所有都失败)。是全局性的配置,如果要对某个http请求放水(然后自定义事务),可以用non_atomic_requests修饰器



from django.db import transaction

class xxx(xxxView):
@transaction.non_atomic_requests
def post(self, request, *args, **kwargs):
...