django中怎么使用mysql数据库的事务

Mysql数据库事务:

在进行后端业务开始操作修改数据库时,可能会涉及到多张表的数据修改,对这些数据的修改应该是一个整体事务,即要么一起成功,要么一起失败

Django中对于数据库的事务,默认每执行一句数据库操作,便会自动提交。我们需要在保存数据库操作中自己控制数据库事务的执行流程。

在Django中可以通过django.db.transaction模块提供的atomic来定义一个事务,atomic提供两种用法:

  • 装饰器用法  
from django.db import transaction

@transaction.atomic
def viewfunc(request):
    # 这些代码会在一个事务中执行
    ...
  • with语句用法 
from django.db import transaction

def viewfunc(request):
    # 这部分代码不在事务中,会被Django自动提交
    ...

    with transaction.atomic():
        # 这部分代码会在事务中执行
        ...

在Django中,还提供了保存点的支持,可以在事务中创建保存点来记录数据的特定状态,数据库出现错误时,可以恢复到数据保存点的状态

from django.db import transaction

# 创建保存点
save_id = transaction.savepoint()  

# 回滚到保存点
transaction.savepoint_rollback(save_id)

补充:

mysql事务:一组mysql语句,放在同一事务中,要么都成功,要么都失败。

1)mysql事务基本操作:

? begin或start transaction:手动开启一个mysql事务。

? commit: 事务提交,让事务中sql语句的执行结果永久有效。

? rollback: 事务回滚,撤销事务中sql语句的执行结果。

2)mysql事务的保存点:

? 在mysql事务中,可以设置事务保存点,在进行事务语句回滚时可以只回滚到某个保存点。

? savepoint `保存点名称`: 设置mysql事务保存点。

? rollback to `保存点名称`: 回滚事务语句到保存点的位置,保存点之后sql语句的执行结果会被撤销。

原文地址:https://www.cnblogs.com/168vincent/p/9643339.html

时间: 2024-10-15 14:26:08

django中怎么使用mysql数据库的事务的相关文章

MySQL数据库的事务管理

当前在开发ERP系统,使用到的数据库为Mysql.下面介绍下如何开启事务,以及事务隔离的机制 : 1. 检查当前数据库使用的存储引擎. show engines; 2. 修改前my.ini中的文件如下: 3. 修改my.ini的文件如下. 3.1 修改了默认的存储引擎 3.2 增加了mysql数据库的事务隔离级别, 如果不添加默认是REPEATABLE-READ. 4. 只需要重启mysql的服务即可. net stop mysql net start mysql 5. 再次查询show eng

hibernate4中oracle,sqlserver,mysql数据库的sql方言配置(SQL Dialects)

hibernate4中oracle,mysql,sqlserver数据库的sql方言配置(SQL Dialects) 数据库类型 Hibernate sql方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS390 org.hibernate.dialect.DB2390Dialect PostgreSQL 8.1 org.hibernate.dialect.Po

成功实现Navicat访问Linux中安装的MySQL数据库

成功实现Navicat访问Linux中安装的MySQL数据库 1.安装好MySQL,检查是否正常登录 2.进入mysql数据库配置远程连接 #将所有数据库的所有表(*.*)的所有权限(all privileges),授予通过任何ip(%)访问的root用户,密码为123123,如果要限制只有某台机器可以访问,将其换成相应的IP即可 mysql> grant all privileges on *.* to 'root'@'%' identified by ' '; mysql> flush p

django连接多个mysql数据库

https://www.cnblogs.com/zhangxinqi/p/9094953.html 阅读目录 1.定义数据库 (1) DATABASES内部选项: (2)自定义数据库 2.同步数据库 3.自动数据库路由 (1)定义数据库路由方法类 (2)使用路由数据库 (3)生成数据表并同步数据 4.手动选择数据库 回到顶部 1.定义数据库 在django项目中, 一个工程中存在多个APP应用很常见:有时候希望不同的APP连接不同的数据库,这个时候需要建立多个数据库连接.在Django的sett

python django 站点管理 配置mysql数据库

运行命令mysql -uroot -p进入mysql 新建一个数据库mydatabase 在/mysite/mysite目录下 编辑settings.py文件: 默认数据库为sqlite: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'mydatabase', } } mysql数据库配置: DATABASES = { 'default': { 'ENGINE': 'django.db.ba

django整合原有的mysql数据库

虽然django适合从零开始构建一个项目,但有时候整合原有的数据库也在所难免,下面以django整合我的mysql作说明. mysql数据是我从京东上抓取的数据,数据表名为jd,演示如图 下面将jd整合到django中,操作如下 1.修改settings.py [email protected]:/home/jd# vim jd/settings.py ... DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', #'N

记录一次Spring boot 搭建框架连接Mysql数据库注解事务不回滚的故障

搭建了一个新框架,使用了spring boot 替换以简化原来繁杂的spring配置,使用Spring注解管理事务,持久层使用mybatis. 连接mysql数据库完成项目的过程中发现不支持事务,因为用的新框架自己本身也不是很了解,刚开始一直以为是自己的框架搭建的有问题, 后来发现是mysql数据库引擎的问题 解决方案 MyISAM不支持事物,InnoDB支持事物 先检查你的mysql版本 ,mysql 4.0系列之前是不支持事务的.    SELECT VERSION(); 检查你的数据库支持

Eclipse中hibernate连接mySQL数据库练习

(采用的是hibernate中XML配置方式连接数据库,以后在更新其他方式的连接) Hibernate就是Java后台数据库持久层的框架,也是目前企业用最多的数据库框架,主要是基于ORM -- object relationship Mapping,翻译成中文叫“对象关系映射”,也就是将SQL这种非面向对象语言转化成hibernation面向对象的写法,本文将通过在Eclipse下搭建HIbernate框架 我所使用的Hibernate版本是Hibernate3.3.2,Hibernate官网下

CentOS 6.5系统中安装配置MySQL数据库

就像Windows server 2003,2008中一般安装的是Sql Server 数据库,在linux系统中一般安装的是mysql数据库,而且Mysql数据库的第一个版本就是发行在Linux系统上的. 一.mysql简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL的SQL语言是用于访问数据库的