django09--事务的流程

 1,事务

就是来保障我们数据的安全,把一块完整的操作(包括多个操作逻辑)看成一个完整单元,要么全部成功,要么全部失败。

事务四个特性(ACID):原子性,一致性,隔离性,持久性

        事务放到我们的业务逻辑中来处理,不能等到数据库那一关。

事务的并发:可以提高服务器资源利用的

造成的问题:1.脏读,2.幻读,3.不可重复读,4.丢失更新

解决事务并发产生的问题:设定隔离级别

四个级别:1.读取未提交,2.读取已提交(推荐设置这个级别),3.可重复读,4.串行化

                  四个级别从上往下越来越高的

使用场景:主要是对于数据库有副作用的一些操作。也就是增删改的操作。

2, 事务使用流程

1)导库:from django.db import transaction

2)在需要事务的方法上加上装饰器:@transaction.atomic

3)在逻辑前设置还原点:s_id = transaction.savepoint()

4)4.1逻辑完全成立,全部成功做提交:transaction.savepoint_commit(s_id)

4.2逻辑不完全成立,全部失败做回滚:transaction.savepoint_rollback(s_id)

事务的流程

1.导入库模块

2.确保整个方法具有原子性,加上装饰器

3.在逻辑前设置还原点

4.逻辑完全成立,提交事务

5.逻辑不完全成立,回滚事务

# 1.导入库模块
from django.db import transaction
# 2.确保整个方法具有原子性
@transaction.atomic
def register(request):
    if request.method == "GET":
        return render(request, "myblog/register.html")
    elif request.method == "POST":
        name = request.POST.get("name")
        age = request.POST.get("age")
        print(name, age)

        # 3.在逻辑前设置还原点
        s_id = transaction.savepoint()
        try:
            # 1 / 0
            user = models.User(name=name, age=age)
            user.save()
            # 4.逻辑完全成立,提交事务
            transaction.savepoint_commit(s_id)
            return HttpResponse("注册成功")
        except:
            # 5.逻辑不完全成立,回滚事务
            transaction.savepoint_rollback(s_id)
            return HttpResponse("注册失败")

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值