Django的ORM实现数据库事务操做

在Django中实现数据库的事务操做python

在学习MySQL数据库时,MySQL数据库是支持原子操做的.数据库

什么是数据库的原子操做呢??打个比方,一个消费者在一个商户里刷信用卡消费.django

交易正常时,银行在消费者的帐户里减去相应的款项,在商户的账户加上相应的款项.函数

可是若是银行从消费者的帐户里扣完钱以后,还未在商户的账户里加上相应的款项时.学习

因为某些缘由,系统或者数据库出现异常了,那么此时钱已经从消费者的帐户里扣除了,可是商户的帐户里却没有加上相应的款项,让会让商户遭受损失.atom

这种状况下,最好的解决办法就是使用数据库的原子性操做.code

若是数据库使用了事务操做,当出现上面的操做异常时,待数据库正常运行后,数据库系统会把先前执行了一半的操做退回到这个操做以前的状态,blog

这个一般称为数据库的回滚,也即数据库的原子性操做.事务

Django中,正常的数据库操做应该是原子性操做的.it

在Django的ORM中,想使用事务操做时,要先导入一个Django的内置模块

from django.db import transaction

 

对应的视图函数  

 from django.shortcuts import render,HttpResponse
    from . import models
    
    def index(request):
    
        from django.db import transaction
    
        try:
            with transaction.atomic():
                models.Userinfo.objects.create(username="python001",email="python001@qq.com")
                models.Group.objects.create(title="python002")
    
        except Exception as e:
            return HttpResponse("出现错误....")
        return HttpResponse("ok")

  

相关文章
相关标签/搜索