Django事务transaction的使用以及多个装饰器问题

 更新时间:2023年08月24日 14:35:15   作者:Lei Gong  
这篇文章主要介绍了Django事务transaction的使用以及多个装饰器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Django事务transaction使用及多个装饰器

django事务类库:django.db.transaction

atomic提供装饰器用法当有多个装饰器时@transaction.atomic必须紧贴函数,如果其他装饰器紧贴函数虽不会报错但函数执行会出现问题

例:

#正确用法
from django.db import transaction
@classmethod
@transaction.atomic
def func(request):
 ......
#错误用法
from django.db import transaction
@transaction.atomic
@classmethod
def func(request):
 ......

atomic提供两种方案实现事务

1、装饰器用法:

from django.db import transaction
@transaction.atomic
def func(request):
  # 这些代码会在一个事务中执行
  ......

装饰器用法:

  • 整个视图中所有 MySQL 数据库的操作都看做一个事务,范围太大,不够灵活。
  • 而且无法直接作用于类视图

2、with 语句用法:

from django.db import transaction
def func(request):
  # 这部分代码不在事务中,会被 Django 自动提交
  ......
  with transaction.atomic():
      # 这部分代码会在事务中执行
      ......

with 语句用法:

  • 可以灵活的有选择性的把某些 MySQL 数据库的操作看做一个事务。
  • 而且不用关心视图的类型。

Django事务transaction.atomic

自定义事务处理

方法一:全局配置对一整个http请求内数据库操作进行事务管理

方法二:atomic 装饰器对整个view进行事务管理

方法三:atomic 对代码块进行事务管理

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python爬虫代理池搭建的方法步骤

    Python爬虫代理池搭建的方法步骤

    这篇文章主要介绍了Python爬虫代理池搭建的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • pytorch交叉熵损失函数的weight参数的使用

    pytorch交叉熵损失函数的weight参数的使用

    这篇文章主要介绍了pytorch交叉熵损失函数的weight参数的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • python利用smtplib实现QQ邮箱发送邮件

    python利用smtplib实现QQ邮箱发送邮件

    这篇文章主要为大家详细介绍了python利用smtplib实现QQ邮箱发送邮件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Python代理抓取并验证使用多线程实现

    Python代理抓取并验证使用多线程实现

    这里没有使用队列只是采用多线程分发对代理量不大的网页还行但是几百几千性能就很差了,感兴趣的朋友可以了解下,希望对你有所帮助
    2013-05-05
  • python实现微信小程序用户登录、模板推送

    python实现微信小程序用户登录、模板推送

    这篇文章主要为大家详细介绍了python实现微信小程序用户登录、模板推送,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Python3标准库glob文件名模式匹配的问题

    Python3标准库glob文件名模式匹配的问题

    glob的模式规则与re模块使用的正则表达式并不相同。实际上,glob的模式遵循标准UNIX路径扩展规则。只使用几个特殊字符来实现两个不同的通配符和字符区间。这篇文章主要介绍了Python3标准库glob文件名模式匹配的知识,需要的朋友可以参考下
    2020-03-03
  • Python2和Python3中@abstractmethod使用方法

    Python2和Python3中@abstractmethod使用方法

    这篇文章主要介绍了Python2和Python3中@abstractmethod使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python实现的单向循环链表功能示例

    Python实现的单向循环链表功能示例

    这篇文章主要介绍了Python实现的单向循环链表功能,简单描述了单向循环链表的概念、原理并结合实例形式分析了Python定义与使用单向循环链表的相关操作技巧,需要的朋友可以参考下
    2017-11-11
  • python 动态渲染 mysql 配置文件的示例

    python 动态渲染 mysql 配置文件的示例

    这篇文章主要介绍了python 动态渲染 mysql 配置文件的示例,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-11-11
  • Pandas 对Dataframe结构排序的实现方法

    Pandas 对Dataframe结构排序的实现方法

    下面小编就为大家分享一篇Pandas 对Dataframe结构排序的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04

最新评论