在Django中可以通过django.db.transaction模块提供的atomic来定义一个事务,atomic提供两种用法
通过给函数加装饰器使用
from django.views import View
from django.db import transaction
from rest_framework.views import APIView
class Index(View):
@transaction.atomic # 开启事务,当方法执行完以后,自动提交事务
def post(self, request):
pass
@transaction.atomic
def viewfunc(request):
pass
作为上下文管理器来使用
from django.db import transaction
from rest_framework.views import APIView
class OrderAPIView(APIView):
def post(self,request):
....
with transation.atomic(): # 开启事务,当with语句执行完成以后,自动提交事务
pass
transaction的其他方法
from django.db import transaction
with transaction.atomic():
# 创建保存点
save_id = transaction.savepoint()
# 回滚到保存点
transaction.savepoint_rollback(save_id)
# 提交从保存点到当前状态的所有数据库事务操作
transaction.savepoint_commit(save_id)