#Django事务#

事务实现方式
1:基于装饰器实现

@transaction.atomic
def my_view(request):
    #处理操作
    #操作数据1
    #操作数据2

当HTTP相应码是500,事务回滚

2:使用with语句
  from django.db import transaction


  def my_view(request):
    with transaction.atomic()
        #处理操作
        #操作数据1
        #操作数据2

3:手动处理
  from django.db import connection 
  connection.set_autocommit(False)
    try:
        #处理操作
        #操作数据1
        #操作数据2
        connection.commit()
    except Exception as e :
        #print("errorrrrrrrr",str(e))
        connection.rollback()
    finally:
        connection.set_autocommit(True)

4:全局事务配置文件方式
 DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'testdb', 
        'USER': 'root',  
        'PASSWORD': '123', 
        'HOST': '127.0.0.1',     
        'PORT': 3306,  
        'ATOMIC_REQUESTS': True  # 全局开启事务,和http请求的整个过程绑定在一起
    }
}

它是这样工作的:在调用视图方法前,Django 先生成一个事务。如果响应能正常生成,Django 会提交该事务。而如果视图出现异常,Django 则会回滚该事务。
如果你全局开启了事务,你仍然可以使用 non_atomic_requests 装饰器让某些视图方法不受事务控制,但需要注意的是,该装饰器
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值