django中实现事务的几种方式

1 全局开启事务---> 全局开启事务,绑定的是http请求响应整个过程

DATABASES = {
    'default': {
        #全局开启事务,绑定的是http请求响应整个过程
        'ATOMIC_REQUESTS': True, 
    }
}


from django.db import transaction
# 局部禁用事务
@transaction.non_atomic_requests
def seckill(request):
    return HttpResponse('秒杀成功')

2 一个视图函数在一个事物中

# fbv开启
from django.db import transaction
@transaction.atomic
def seckill(request):
    return HttpResponse('秒杀成功')


# cbv开启
from django.db import transaction
from rest_framework.views import APIView
class SeckillAPIView(APIView):
    @transaction.atomic
    def post(self, request):
        pass

3 局部使用事务

from django.db import transaction
def seckill(request):
    with transaction.atomic():
        pass  # 都在一个事物中
    return HttpResponse('秒杀成功')

 

posted @ 2023-08-15 16:28  刹爵  阅读(9)  评论(0)    收藏  举报