最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django?事務回滾的具體實現(xiàn)

 更新時間:2023年02月20日 10:19:22   作者:Sunny_Boy0518  
本文主要介紹了Django?事務回滾的具體實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、事務的四大特性

一般來說,事務是必須滿足4個條件(ACID)::原子性(Atomicity,或稱不可分割性)、一致性(Consistency)、隔離性(Isolation,又稱獨立性)、持久性(Durability)。

  • 原子性:一個事務(transaction)中的所有操作,要么全部完成,要么全部不完成,不會結束在中間某個環(huán)節(jié)。事務在執(zhí)行過程中發(fā)生錯誤,會被回滾(Rollback)到事務開始前的狀態(tài),就像這個事務從來沒有執(zhí)行過一樣。
  • 一致性:在事務開始之前和事務結束以后,數(shù)據(jù)庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預設規(guī)則,這包含資料的精確度、串聯(lián)性以及后續(xù)數(shù)據(jù)庫可以自發(fā)性地完成預定的工作。
  • 隔離性:數(shù)據(jù)庫允許多個并發(fā)事務同時對其數(shù)據(jù)進行讀寫和修改的能力,隔離性可以防止多個事務并發(fā)執(zhí)行時由于交叉執(zhí)行而導致數(shù)據(jù)的不一致。事務隔離分為不同級別,包括讀未提交(Read uncommitted)、讀提交(read committed)、可重復讀(repeatable read)和串行化(Serializable)。
  • 持久性:事務處理結束后,對數(shù)據(jù)的修改就是永久的,即便系統(tǒng)故障也不會丟失。

二、數(shù)據(jù)庫事務

Django中對于數(shù)據(jù)庫的事務,默認每執(zhí)行一句數(shù)據(jù)庫操作,便會自動提交,我們需要在保存訂單中自己控制數(shù)據(jù)庫事務的執(zhí)行流程

2.1使用裝飾器(整體回滾,不處理異常)

調(diào)用@transaction.atomic,進行整體回滾

from django.db import transaction

@transaction.atomic
def viewfunc(request):
? ? # 這些代碼會在一個事務中執(zhí)行
? ? #...

2.2使用with語句(部分回滾,不處理異常)

from django.db import transaction

def viewfunc(request):
? ? # 這部分代碼不在事務中,會被Django自動提交
? ? #...

? ? with transaction.atomic():
? ? ? ? # 這部分代碼會在事務中執(zhí)行
? ? ? ? #...

注:裝飾器和with語句直接使用會導致異常沒有辦法處理,如果需要處理異常,則可以通過以下的方式進行

2.3使用with語句(部分回滾,可以處理異常)

from django.db import transaction

def viewfunc(request):
? ? # 這部分代碼不在事務中,會被Django自動提交
? ? #...
?? ?try:
? ? ? ? with transaction.atomic():
? ? ? ? ? ? # 這部分代碼會在事務中執(zhí)行
? ? ? ? ? ? #...
? ? except 異常:
? ? ? ? # 處理異常的代碼

2.4使用保存點(部分回滾,可以處理異常)

需要注意的是要和裝飾器進行配合

from django.db import transaction

@transaction.atomic
def viewfunc(request):
? ? # 這部分代碼不在事務中,會被Django自動提交
? ? #...
?? ?try:
? ? ? ? # 在事務開始前創(chuàng)建保存點
? ? ? ? save_id = transaction.savepoint()
? ? ? ? # 這部分代碼會在事務中執(zhí)行
? ? ? ? #...
? ? ? ? # 提交從保存點到當前狀態(tài)的所有數(shù)據(jù)庫事務操作
? ? ? ? transaction.savepoint_commit(save_id)
? ? except 異常:
? ? ? ? # 回滾到保存點
? ? ? ? transaction.savepoint_rollback(save_id)
? ? ? ? # 處理異常的代碼

到此這篇關于Django 事務回滾的具體實現(xiàn)的文章就介紹到這了,更多相關Django 事務回滾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python集合是否可變總結

    python集合是否可變總結

    在本篇文章里小編給大家分享了關于python集合是否可變的相關知識點總結,有需要的朋友們學習下。
    2019-06-06
  • Django數(shù)據(jù)映射(一對一,一對多,多對多)

    Django數(shù)據(jù)映射(一對一,一對多,多對多)

    本文主要介紹了Django數(shù)據(jù)映射(一對一,一對多,多對多),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • python 基于DDT實現(xiàn)數(shù)據(jù)驅動測試

    python 基于DDT實現(xiàn)數(shù)據(jù)驅動測試

    這篇文章主要介紹了python 基于DDT實現(xiàn)數(shù)據(jù)驅動測試的方法,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-02-02
  • 在Python程序員面試中被問的最多的10道題

    在Python程序員面試中被問的最多的10道題

    本篇文章我們?yōu)榇蠹艺砹嗽赑ython程序員面試中被問的最多的10道題,我們還給出了最簡便的解決辦法,一起學習下。
    2017-12-12
  • Python中如何調(diào)用系統(tǒng)命令和進程

    Python中如何調(diào)用系統(tǒng)命令和進程

    在Python編程中,subprocess庫是一個功能強大的工具,本文將詳細介紹subprocess庫的功能和應用場景,并通過代碼示例進行說明,需要的可以了解下
    2025-02-02
  • python的函數(shù)參數(shù)你了解嗎

    python的函數(shù)參數(shù)你了解嗎

    這篇文章主要為大家詳細介紹了python的函數(shù)參數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • pyqt5+opencv?實現(xiàn)讀取視頻數(shù)據(jù)的方法

    pyqt5+opencv?實現(xiàn)讀取視頻數(shù)據(jù)的方法

    這篇文章主要介紹了pyqt5+opencv?實現(xiàn)讀取視頻數(shù)據(jù)的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • python實現(xiàn)串口通信的示例代碼

    python實現(xiàn)串口通信的示例代碼

    這篇文章主要介紹了python實現(xiàn)串口通信的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • python 實現(xiàn)檢驗33品種數(shù)據(jù)是否是正態(tài)分布

    python 實現(xiàn)檢驗33品種數(shù)據(jù)是否是正態(tài)分布

    今天小編就為大家分享一篇python 實現(xiàn)檢驗33品種數(shù)據(jù)是否是正態(tài)分布,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python定時關機小腳本

    python定時關機小腳本

    這篇文章主要為大家詳細介紹了python定時關機小腳本,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06

最新評論

泸西县| 西安市| 景泰县| 清涧县| 靖安县| 夹江县| 时尚| 淮阳县| 镇坪县| 玉门市| 崇义县| 简阳市| 崇礼县| 鄱阳县| 临猗县| 松阳县| 红原县| 宜丰县| 隆林| 镇宁| 治多县| 石阡县| 和田市| 旬阳县| 肥城市| 海门市| 临城县| 庆城县| 柘城县| 清远市| 安溪县| 新巴尔虎左旗| 依兰县| 错那县| 信阳市| 洛浦县| 遵义县| 德江县| 阜南县| 昭通市| 延津县|