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")

  

相關文章
相關標籤/搜索