django - transaction

 1 def user_atomic():
 2     User.objects.create(name=‘purk1‘, email=‘[email protected]‘)
 3     User.objects.create(name=‘purk3‘, email=‘[email protected]‘)
 4     try:
 5         User.objects.create(user_id=‘purk2‘, name=‘purk2‘, email=‘[email protected]‘)
 6     except Exception as e:
 7         e
 8
 9
10 @transaction.atomic
11 def user_atomic_decorator():
12     user = User.objects.create(name=‘purk1‘, email=‘[email protected]‘)
13     User.objects.create(name=‘purk3‘, email=‘[email protected]‘)
14     try:
15         User.objects.create(user_id=‘purk2‘, name=‘purk2‘, email=‘[email protected]‘)
16     except Exception as e:
17         e

user_id 为uuid类型,所以try里面肯定会抛异常

result:

用atomic装饰之后,里面的结果就被回滚了

时间: 2024-11-04 11:02:28

django - transaction的相关文章

事务的隔离级别 另一种事务开启方式

事务是有隔离级别 read uncommited (读未提交):不做任何隔离,具有脏读,不可重读对,幻读的问题 read committed (读提交):可以防止脏读,不能防止不可重复读和幻读的问题 repeated read(可重复读):可以防止脏读,不可重复读,不能放在幻读(mysql的默认隔离级别) serializable(串行化):数据库运行为串行,以上问题都可以防止,但是性能低 下面的解释都用这个user表 脏读(a,b同时开始事务,a,b再事务,没有哪一个结束,只有两个都进入事务后

django 事务错误 -- Transaction managed block ended with pending COMMIT/ROLLBACK

1 Request Method: GET 2 Request URL: http://192.168.128.111:8000/×××/××××/ 3 Django Version: 1.4.8 4 Exception Type: TransactionManagementError 5 Exception Value: 6 Transaction managed block ended with pending COMMIT/ROLLBACK 今天在做事务处理的时候老是出现这个问题,我研究了

Django中如何使用django-celery完成异步任务2(转)

原文链接: http://www.weiguda.com/blog/74/ 在上一篇博文中, 我们介绍了如何在开发环境中使用Celery. 接下来我们介绍一下如何在部署环境使用Celery. 1. 简单设置 一个简单的Celery堆有一个queue和一个worker进程组成. 使用以下命令启动worker: python manage.py celery worker -B 以上命令是基于django-celery, 当然你也可以celery自身启动worker. 通常我们使用superviso

Django模型修改及数据迁移

Migrations Django中对Model进行修改是件麻烦的事情,syncdb命令仅仅创建数据库里还没有的表,它并不对已存在的数据表进行同步修改,也不处理数据模型的删除. 如果你新增或修改数据模型里的字段,或是删除了一个数据模型,你需要手动在数据库里进行相应的修改或者使用South.Django 1.7中已经集成了South的代码,提供了3个新命令: migrate: 用于执行迁移动作,具有syncdb的功能 makemigrations: 基于当前的model创建新的迁移策略文件 sql

django中数据库事物的管理

事务(Transaction)是并发控制的基本单位.所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位.例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行.所以,应该把他们看成一个事务.事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性. 在django1.8中事务的使用  注意:只要是已报异常,程序就自动回滚了.. from django.db import transaction #首先要导包 @

使用Django清理数据库中的数据

数据库,数据清洗 问题叙述性说明:在系统我用在,因为历史和由于各种原因,原因记录的数据内的数据库表,有一个问题,有反复和不完整的数据 解:首先.由于数据量还是挺大的,工的清理肯定不行, 然后,我就想写SQL脚本来依照约定的规则进行更新,能够利用游标 来完毕表中的记录的遍历,可是SQL是面向结构化的查询语言,不是面向过程的.所以尽管能够可是没有C和python这种面向过程的使用方便, 后来.我想直接在我的项目中新建一个方法.然后通过浏览器的地址栏来调用.就能够了. PS:尽管说Django的orm

django 和 mysql的一次troubleshooting

下面是一次用django连接mysql的经历,记录下来也许以后会有帮助. 首先是用django的./manage.py syncdb 去连接mysql + ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 -bash-3.2$ ./manage.py syncdb Tr

Django 基础(一),项目创建,URL路由,数据库操作

一.安装Django 下载地址:https://www.djangoproject.com/download/ 1.tar zxvf Django-1.8.10.tar.gz 2.cd Django-1.8.10 3.python setup.py install 二.创建一个Django项目 django-admin startproject sitename 常用命令: python manage.py runserver 0.0.0.0 python manage.py startapp

django中的事务管理

在讲解之前首先来了解一下数据库中的事务. 什么是数据库中的事务? 热心网友回答: (1):事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性. (2):事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束. COMMIT表示提交,即提交事务的所有操作.具体地说就是将事务中所有对数据库的更新写回