往資料庫寫入資料時,如果寫入了不完整的資料,我們稱之為髒資料。事務管理(transaction)可以防止這種情況發生。事務管理一旦監測到寫入異常,會執行回滾操作,即要麼寫入完整的資料,要麼不寫入。在django中使用事務很簡單,我們來測試一下:
from django.db import models
class
userinfo
(models.model):
username = models.charfield(max_length=32)
email = models.emailfield(max_length=64)
class
dept
(models.model):
title = models.charfield(max_length=32)
定義路由:
from django.conf.urls import url
urlpatterns = [
url(r'^test/$', views.test),
]
定義test檢視函式:
from django.db import transaction # 匯入事務
with transaction.atomic():
user_obj = models.userinfo.objects.create(username='lena', email='[email protected]')
dept_obj = models.dept.objects.create(title='it')
except exception as e:
return httpresponse('ok')說明:
以上將建立user_obj
和dept_obj
記錄的行為組合成乙個不可分割的原子性操作,原子內執行的資料庫操作發生任何異常,都會執行回滾操作。
事物檢查異常回滾,但是不容錯,錯誤還是會丟擲,因此這裡用了異常捕捉。
正常情況下訪問,將會得到ok響應,如果我們手動將
dept_obj = models.dept.objects.create(title='it')
的title='it'
改為name='it'
,手動造成異常,那麼會觸發事物回滾,寫入的user_obj
也會撤銷。這一點可以檢視資料庫驗證。
注意一點:事務需要資料庫引擎支援,比如innodb引擎就是支援的。
資料庫之事務
事務是併發控制的單位,是使用者定義的乙個操作序列。這些操作要麼都做,要麼都不做,是個不可分割的工作單位。如果某一事務成功,則在該事務中進行的所有資料更改均會提交,成為資料庫中永久的組成部分。如果事務遇到錯誤,則必須取消或回滾,所有資料均被更改清除。1 原子性 atomicity 事務是資料庫的邏輯工...
資料庫之事務
概述 事務一般是指要做的或所做的事情。在計算機術語中是指訪問並可能更新資料庫中各種資料項的乙個程式執行單元 unit 特徵 事務具有4個基本特徵,分別是 原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 duration 簡稱acid。原子性事務的原子性...
資料庫 之 事務
本文將以mysql為主分析 在mysql中只有使用了innodb資料庫引擎的資料庫或表才支援事務 事務處理可以用來維護資料庫的完整性,保證成批的sql語句要麼全部執行,要麼全部不執行 事務用來管理insert update delete語句。事務必須滿足4個條件acid a atomicity 原子...