python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Django事务transaction使用及多个装饰器

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

作者: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):
  # 这些代码会在一个事务中执行
  ......

装饰器用法:

2、with 语句用法:

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

with 语句用法:

Django事务transaction.atomic

自定义事务处理

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

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

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

总结

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

您可能感兴趣的文章:
阅读全文