Django事務(wù)transaction的使用以及多個裝飾器問題
Django事務(wù)transaction使用及多個裝飾器
django事務(wù)類庫:django.db.transaction
atomic提供裝飾器用法當(dāng)有多個裝飾器時@transaction.atomic必須緊貼函數(shù),如果其他裝飾器緊貼函數(shù)雖不會報錯但函數(shù)執(zhí)行會出現(xiàn)問題
例:
#正確用法 from django.db import transaction @classmethod @transaction.atomic def func(request): ...... #錯誤用法 from django.db import transaction @transaction.atomic @classmethod def func(request): ......
atomic提供兩種方案實現(xiàn)事務(wù)
1、裝飾器用法:
from django.db import transaction @transaction.atomic def func(request): # 這些代碼會在一個事務(wù)中執(zhí)行 ......
裝飾器用法:
- 整個視圖中所有 MySQL 數(shù)據(jù)庫的操作都看做一個事務(wù),范圍太大,不夠靈活。
- 而且無法直接作用于類視圖
2、with 語句用法:
from django.db import transaction
def func(request):
# 這部分代碼不在事務(wù)中,會被 Django 自動提交
......
with transaction.atomic():
# 這部分代碼會在事務(wù)中執(zhí)行
......with 語句用法:
- 可以靈活的有選擇性的把某些 MySQL 數(shù)據(jù)庫的操作看做一個事務(wù)。
- 而且不用關(guān)心視圖的類型。
Django事務(wù)transaction.atomic
自定義事務(wù)處理
方法一:全局配置對一整個http請求內(nèi)數(shù)據(jù)庫操作進(jìn)行事務(wù)管理
方法二:atomic 裝飾器對整個view進(jìn)行事務(wù)管理
方法三:atomic 對代碼塊進(jìn)行事務(wù)管理
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python 實現(xiàn)圖片上傳接口開發(fā) 并生成可以訪問的圖片url
今天小編就為大家分享一篇python 實現(xiàn)圖片上傳接口開發(fā) 并生成可以訪問的圖片url,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
python項目中requirements.txt的用法實例教程
Python項目中必須包含一個requirements.txt文件,用于記錄所有依賴包及其精確的版本號,以便新環(huán)境部署,下面這篇文章主要給大家介紹了關(guān)于python項目中requirements.txt用法的相關(guān)資料,需要的朋友可以參考下2022-06-06
Python中強(qiáng)大的函數(shù)map?filter?reduce使用詳解
Python是一門功能豐富的編程語言,提供了許多內(nèi)置函數(shù),以簡化各種編程任務(wù),在Python中,map(),filter()和reduce()是一組非常有用的函數(shù),它們允許對可迭代對象進(jìn)行操作,從而實現(xiàn)數(shù)據(jù)轉(zhuǎn)換、篩選和累積等操作,本文將詳細(xì)介紹這三個函數(shù),包括它們的基本用法和示例代碼2023-11-11
Python使用JSON庫解析JSON數(shù)據(jù)的方法
這篇文章主要介紹了Python使用JSON庫解析JSON數(shù)據(jù),主要包括如何在網(wǎng)頁中獲取json數(shù)據(jù)及python內(nèi)置的json庫,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06

