首页 > 其他分享 >django中实现事务的几种方式

django中实现事务的几种方式

时间:2023-11-29 21:47:44浏览次数:39  
标签:事务 transaction db 几种 atomic import django

django中实现事务的几种方式

https://zhuanlan.zhihu.com/p/622987268

具体表现形式为:每次数据库操作(比如调用save()方法)会立即被提交到数据库中。

但是如果你希望把连续的SQL操作包裹在一个事务里,就需要手动开启事务

根据粒度不同,三种

全局:

全局,每次请求在一个事务中,粒度太大,事务时间很长

 DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.mysql',
         'NAME': 'llll',
         'HOST': '127.0.0.1',
         'PORT': '3306',
         'USER': 'llll',
         'PASSWORD': '123',
          #全局开启事务,绑定的是http请求响应整个过程
         'ATOMIC_REQUESTS': True, 
         }
    }

局部禁用全局事务

from django.db import transaction

多数据库,用default的视图不受事务控制

@transaction.non_atomic_requests(using='default')
def seckill(request):
    return HttpResponse('秒杀成功')

 

视图开启事务

# 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
    
################ 局部使用事务#####################
from django.db import transaction
def seckill(request):
    with transaction.atomic():
        save()
        update()
    return HttpResponse('秒杀成功')

 

标签:事务,transaction,db,几种,atomic,import,django
From: https://www.cnblogs.com/YeeQX/p/17865954.html

相关文章

  • Django中实现事务的几种方式、事物的回滚和保存点、事务提交后,执行某个回调函数、Djan
    Django中实现事务的几种方式#https://zhuanlan.zhihu.com/p/622987268Django是支持事务操作的,它的默认事务行为是自动提交,具体表现形式为:每次数据库操作(比如调用save()方法)会立即被提交到数据库中。但是如果你希望把连续的SQL操作包裹在一个事务里,就需要手动开启事务#......
  • Django补充3
    Django分了很多层路由曾视图层请求对象和响应对象模板曾模型层:orm:表单,多表,各种查询ajaxforms组件 分页器 cookiesession  中间件 auth————————————————————————————————————————————————......
  • 页面静态化——Django中Template和Context模块的使用方法
    1.Template和Context的导入fromdjango.templateimportTemplate,Context2.生成静态页面——在后端调用模板语法生成HTML页面,并保存到指定路径 2.1我们想生成一个前端页面,代码如下后端视图层传入的对象:user_data=models.Userdata.objects.all()<html......
  • 用C#实现的几种常用数据校验方法整理(CRC校验;LRC校验;BCC校验;累加和校验)
    CRC即循环冗余校验码(CyclicRedundancyCheck):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完......
  • 事务的隔离级别
    事务的常见问题:脏读,幻读,不可重复读更新丢失(LostUpdate) 原因:当多个事务选择同一行操作,并且都是基于最初选定的值,由于每个事务都不知道其他事务的存在,就会发生更新覆盖的问题。类比github提交冲突。脏读(DirtyReads) 原因:事务A读取了事务B已经修改但尚未提交的数据。若事务B回......
  • 游戏中模型动画的几种实现方式
    游戏内动画的实现方式一般有这几种:骨骼动画顶点动画材质动画CPU蒙皮动画骨骼动画骨骼动画是一种基于骨骼系统的动画技术,它通过对骨骼进行变换来控制模型的姿态和动作。在骨骼动画中,模型通常被分解成多个部分,每个部分都与一个或多个骨骼相连,通过对骨骼进行旋转、平移、缩放等变换,可......
  • django制作简单网页
    django制作简单网页pycharm,新建project,选择django打开terminalpythonmanage.pystartappmyappmyapp文件夹右键新建文件夹:template,在此文件夹下新建about.html,contact.html,home.html其中的home.html:{%blockcontent%}<nav><ul><li>首页</li>......
  • 有向图求强连通分量的几种算法
    概要本文介绍了kosaraju,tarjan算法求强连通分量概念有一个有向图G,有几个概念强连通若图中有两个点u和v,他们能互相到达,则称他们强连通强连通图若是G中任意2个点都可以互相到达,则称G是一个强连通图强连通分量有向非强连通图的极大强连通子图(可以有很多个)完全......
  • 时区和国际化问题 django admin(管理后台的简单使用)
    1时区和国际化问题```pythonsetting.py中1后台管理汉语问题 LANGUAGE_CODE='zh-hans'#管理后台看到的就是中文2时区问题(使用东八区) TIME_ZONE='Asia/Shanghai'USE_TZ=False``` 2djangoadmin(管理后台的简单使用)```python0管理后台是django提供的可以快速对......
  • Django回顾
    提问#0把mysql全都卸载---》5.7版本---》把5.6卸载https://zhuanlan.zhihu.com/p/571585588#1保证能够链接到你同桌mysql 192.168.1.2521关闭防火墙  2知道你同桌ip  3链接:mysql navicate链接    #2保证你的django,你同桌可以访问-ht......