Django中的原子事务相关注意事项

原创 2015年11月20日 19:46:50

       Django中的原子事务支持(transaction.atomic)方式函数装饰器或者with语句,这种方式特别是前者和Spring里面的AOP事务支持方式基本等同,当然其实质方式都是原始的try..catch方式,真是因为这个真正的原始方式,写这种外套事务支持的业务代码时需要注意一些问题:

      1、外加事务支持的业务代码内部就不要做泛型的try catch异常捕捉,这样会导致,真正的事务支持接不到异常,导致可能所需的事务回滚不会执行。

      2、外加事务支持的业务代码内部的逻辑控制不能对数据库操作有影响,比如Django中的form验证,如果双数据库操作外都有不同的Form验证,那么最好在外部同时做完两个Form验证,然后在内部再用with语句加原子事务支持,否则话,第二次数据库操作可能会由于其相关的form验证失败,而不执行数据库操作,这种纯粹没有任何异常,当然也不会对第一个操作的回滚起任何影响,所以表单验证和数据库提交需要分别的集中化,当然最主要的是不同的数据库操作最好集中执行,而这些操作所需的业务逻辑代码最好在第一个数据库操作之前全部执行准备完。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Django 数据库事务

管理数据库事务Django框架提供了好几种方式来控制和管理数据库事务。(以下Django框架会简化为Django,读者可自行脑补框架两字)Django框架默认的事务行为自动提交作为Django默认的事...
  • ysjian_pingcx
  • ysjian_pingcx
  • 2016年03月30日 16:07
  • 5544

Django 事务处理

django对于事务的支持分几个层次。 1. 什么都不管的话,它是使用 autocommit 方式。也就是在执行了 save() 或 delete() 之后就自动提交了。  2. 通过增加 Tra...
  • qiaojun_peng
  • qiaojun_peng
  • 2013年12月23日 15:39
  • 1173

Django原子性更新数据库——数据库表中属性的自增/自减操作

本文翻译自Django官方文档点击打开链接 如何根据数据库中存在值更新Model中属性(自增操作)? 有时我们需要根据当前数据库中的已存在属性,经过一些简单的数学运算后,来更新它。例如下面...
  • YangZ_XX
  • YangZ_XX
  • 2014年04月01日 09:29
  • 2953

django对事务的处理

Django默认的事务行为 默认情况下,在Django中事务是自动提交的。当我们运行Django内置的模板修改函数时,例如调用model.save()或model.delete()时,事务将被立即提...
  • Mrjiajia
  • Mrjiajia
  • 2015年08月17日 09:21
  • 851

Django 数据库事务

管理数据库事务Django框架提供了好几种方式来控制和管理数据库事务。(以下Django框架会简化为Django,读者可自行脑补框架两字)Django框架默认的事务行为自动提交作为Django默认的事...
  • ysjian_pingcx
  • ysjian_pingcx
  • 2016年03月30日 16:07
  • 5544

Django 事务处理

django对于事务的支持分几个层次。 1. 什么都不管的话,它是使用 autocommit 方式。也就是在执行了 save() 或 delete() 之后就自动提交了。  2. 通过增加 Tra...
  • qiaojun_peng
  • qiaojun_peng
  • 2013年12月23日 15:39
  • 1173

Django数据库操作

1.增加字段 from django.db import models class Person(models.Model): name = models.CharField(max_len...
  • shizhiqiang68
  • shizhiqiang68
  • 2016年04月16日 16:47
  • 1166

django框架中,添加用户操作记录和查询功能

1. Django框架中Request/Response处理流程(铺垫)     django的核心在于中间件middleware,django所有的请求、返回都由中间件来完成。     中间...
  • computerms
  • computerms
  • 2015年07月06日 14:58
  • 3131

Django(三) ORM 数据库操作

一、DjangoORM 创建基本类型及生成数据库表结构1、简介ORM:关系对象映射。定义一个类自动生成数据库的表结构。创建数据库的时候,一般有以下几种常用数据类型:数字、字符串以及时间。ORM分为两种...
  • fgf00
  • fgf00
  • 2016年12月15日 22:35
  • 7114

Django 数据库回滚

如果你花费了很多的时间去进行Django数据库事务处理的话,你将会了解到这是让人晕头转向的。 在过去,只是提供了简单的基础文档,要想清楚知道它是怎么使用的,还必须要通过创建和执行Django的事务处...
  • qq_23934063
  • qq_23934063
  • 2017年05月30日 11:40
  • 1166
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Django中的原子事务相关注意事项
举报原因:
原因补充:

(最多只允许输入30个字)