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ù)庫操作進行事務(wù)管理
方法二:atomic 裝飾器對整個view進行事務(wù)管理
方法三:atomic 對代碼塊進行事務(wù)管理
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python中的可視化設(shè)計與UI界面實現(xiàn)
本文介紹了如何使用Python創(chuàng)建用戶界面(UI),包括使用Tkinter、PyQt、Kivy等庫進行基本窗口、動態(tài)圖表和動畫效果的實現(xiàn),通過示例代碼,展示了如何利用這些庫來構(gòu)建功能強大且美觀的界面2025-01-01Python內(nèi)建類型int源碼學(xué)習(xí)
這篇文章主要為大家介紹了Python內(nèi)建類型int源碼學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05基于Python實現(xiàn)MUI側(cè)滑菜單a標(biāo)簽跳轉(zhuǎn)
這篇文章主要介紹了基于Python實現(xiàn)MUI側(cè)滑菜單a標(biāo)簽跳轉(zhuǎn),mui最接近原生APP體驗的高性能前端框架,MUI側(cè)滑常見的場景有下拉刷新,側(cè)滑抽屜,側(cè)滑刪除,側(cè)滑返回以及側(cè)滑菜單等等,下面來看看文章內(nèi)容詳細的介紹,需要的朋友可以參考一下2021-11-11Python如何統(tǒng)計函數(shù)調(diào)用的耗時
這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)統(tǒng)計函數(shù)調(diào)用的耗時,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04