Django事務(wù)transaction的使用以及多個(gè)裝飾器問(wèn)題
Django事務(wù)transaction使用及多個(gè)裝飾器
django事務(wù)類(lèi)庫(kù):django.db.transaction
atomic提供裝飾器用法當(dāng)有多個(gè)裝飾器時(shí)@transaction.atomic必須緊貼函數(shù),如果其他裝飾器緊貼函數(shù)雖不會(huì)報(bào)錯(cuò)但函數(shù)執(zhí)行會(huì)出現(xiàn)問(wèn)題
例:
#正確用法 from django.db import transaction @classmethod @transaction.atomic def func(request): ...... #錯(cuò)誤用法 from django.db import transaction @transaction.atomic @classmethod def func(request): ......
atomic提供兩種方案實(shí)現(xiàn)事務(wù)
1、裝飾器用法:
from django.db import transaction @transaction.atomic def func(request): # 這些代碼會(huì)在一個(gè)事務(wù)中執(zhí)行 ......
裝飾器用法:
- 整個(gè)視圖中所有 MySQL 數(shù)據(jù)庫(kù)的操作都看做一個(gè)事務(wù),范圍太大,不夠靈活。
- 而且無(wú)法直接作用于類(lèi)視圖
2、with 語(yǔ)句用法:
from django.db import transaction def func(request): # 這部分代碼不在事務(wù)中,會(huì)被 Django 自動(dòng)提交 ...... with transaction.atomic(): # 這部分代碼會(huì)在事務(wù)中執(zhí)行 ......
with 語(yǔ)句用法:
- 可以靈活的有選擇性的把某些 MySQL 數(shù)據(jù)庫(kù)的操作看做一個(gè)事務(wù)。
- 而且不用關(guān)心視圖的類(lèi)型。
Django事務(wù)transaction.atomic
自定義事務(wù)處理
方法一:全局配置對(duì)一整個(gè)http請(qǐng)求內(nèi)數(shù)據(jù)庫(kù)操作進(jìn)行事務(wù)管理
方法二:atomic 裝飾器對(duì)整個(gè)view進(jìn)行事務(wù)管理
方法三:atomic 對(duì)代碼塊進(jìn)行事務(wù)管理
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
pytest自定義命令行參數(shù)的實(shí)現(xiàn)
本文主要介紹了在使用pytest運(yùn)行測(cè)試用例時(shí),通過(guò)傳遞自定義命令行參數(shù)來(lái)啟動(dòng)mitmdump進(jìn)程進(jìn)行抓包,具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12Python中的可視化設(shè)計(jì)與UI界面實(shí)現(xiàn)
本文介紹了如何使用Python創(chuàng)建用戶(hù)界面(UI),包括使用Tkinter、PyQt、Kivy等庫(kù)進(jìn)行基本窗口、動(dòng)態(tài)圖表和動(dòng)畫(huà)效果的實(shí)現(xiàn),通過(guò)示例代碼,展示了如何利用這些庫(kù)來(lái)構(gòu)建功能強(qiáng)大且美觀的界面2025-01-01python實(shí)現(xiàn)跨年煙花動(dòng)態(tài)效果
這篇文章主要介紹了python實(shí)現(xiàn)跨年煙花的動(dòng)態(tài)效果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01Python內(nèi)建類(lèi)型int源碼學(xué)習(xí)
這篇文章主要為大家介紹了Python內(nèi)建類(lèi)型int源碼學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05基于Python實(shí)現(xiàn)MUI側(cè)滑菜單a標(biāo)簽跳轉(zhuǎn)
這篇文章主要介紹了基于Python實(shí)現(xiàn)MUI側(cè)滑菜單a標(biāo)簽跳轉(zhuǎn),mui最接近原生APP體驗(yàn)的高性能前端框架,MUI側(cè)滑常見(jiàn)的場(chǎng)景有下拉刷新,側(cè)滑抽屜,側(cè)滑刪除,側(cè)滑返回以及側(cè)滑菜單等等,下面來(lái)看看文章內(nèi)容詳細(xì)的介紹,需要的朋友可以參考一下2021-11-11Python實(shí)現(xiàn)拼音轉(zhuǎn)換
拼音轉(zhuǎn)換指的是將漢字轉(zhuǎn)為拼音的過(guò)程。本文介紹了Python實(shí)現(xiàn)拼音轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06Python實(shí)現(xiàn)獲取照片拍攝日期并重命名的方法
這篇文章主要介紹了Python實(shí)現(xiàn)獲取照片拍攝日期并重命名的方法,涉及Python針對(duì)文件屬性及文件名相關(guān)操作技巧,需要的朋友可以參考下2017-09-09Python如何統(tǒng)計(jì)函數(shù)調(diào)用的耗時(shí)
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)統(tǒng)計(jì)函數(shù)調(diào)用的耗時(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04