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