Django实现数据库事务操作
2019-01-01 09:43
218 查看
在django中默认每个单独的事件中都是一个事物,但是有一个缺陷就是多表联合操作时会出现每个表单独save().
当上一个表成功 下一个表操作失败了 就会出现问题 比如说转账
所以需要用到事物回滚:
在Django的ORM中,想使用事务操作时,要先导入一个Django的内置模块
from django.db import transaction
首先创建一个模型
from django.db import models class Userinfo(models.Model): username=models.CharField("用户名",max_length=32) email=models.EmailField("邮箱",max_length=32) class Group(models.Model): title=models.CharField("组名",max_length=32)
执行迁移成功后开始写视图
from django.shortcuts import render,HttpResponse from . import models def index(request): from django.db import transactiontry: with transaction.atomic(): models.Userinfo.objects.create(username="python001",email="python001@qq.com") models.Group.objects.create(title="python002") except Exception as e: return HttpResponse("出现错误....")
这里不需要save() django 会监测事物是否会成功 成功自动save()
下面 我们把模型操作的第二句话:
models.Group.objects.create(title="python002")
改成:
models.Group.objects.create(add="python002")
数据库会抛出异常 然后django捕获异常会 会调用事务回滚的方法
相关文章推荐
- Django的ORM实现数据库事务操作
- 使用TransactionScope实现单数据库连接事务操作
- SSM框架——以注解形式实现事务管理,回滚数据库操作
- VB.NET 中启动ADO.NET事务,实现对数据库操作的整体性。
- python2.0_day19_充分使用Django_form实现前端操作后台数据库
- 使用TransactionScope实现多数据库连接事务操作
- Java中怎样实现批量删除操作(Java对数据库进行事务处理)?
- 使用TransactionScope实现多数据库连接事务操作
- Django实现数据上传到数据库操作
- mySql事务_ _Java中怎样实现批量删除操作(Java对数据库进行事务处理)?
- Maven构建SpringMVC项目实现注解、数据库事务管理及存储过程操作
- C#使用COM+实现事务控制,操作多个数据库
- 实现ContentProvider事务操作以及对数据库的监控
- 使用TransactionScope实现多数据库连接事务操作
- 删除信息[置顶] Java中怎样实现批量删除操作(Java对数据库进行事务处理)?
- 使用TransactionScope实现单数据库连接事务操作
- TransactionScope实现多数据库连接事务操作
- TransactionScope 实现多数据库连接事务操作 (转)
- 一个通过数据库镜像实现SPS 2003门户快速备份与恢复的操作手册
- Django数据库操作