我的编程空间,编程开发者的网络收藏夹
学习永远不晚

django中使用mysql的事务

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

django中使用mysql的事务

django中使用mysql的事务[数据库教程]

事务简介

  在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
  事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
  事务用来管理 insert,update,delete 语句
  一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

  •   原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
  •   一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
  •   隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
  •   持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

django中使用事务

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

  1. 装饰器
    from django.db import transaction
    
    @transaction.atomic
    def viewfunc(request):
        # 这些代码会在一个事务中执行
        obj1.save()
        obj2.delete()
        obj3.save()

    注意:在函数视图或类视图上加装饰器,可以将函数内的所有操作当做一个事务。

  2. with语句
    1 from django.db import transaction
    2 
    3 def viewfunc(request):
    4     obj1.save()
    5     # with内部的这些代码会在一个事务中执行
    6     with transaction():
    7         obj2.delete()
    8         obj3.save()

    注意:使用with语句可以限定事务的具体作用范围

  3. 在Django中,还提供了保存点的支持,可以在事务中创建保存点来记录数据的特定状态,数据库出现错误时,可以恢复到数据保存点的状态
     1 from django.db import transaction
     2 
     3 
     4 def viewfunc(request):
     5     obj1.save()
     6     # with内部的这些代码会在一个事务中执行
     7     with transaction():
     8         obj2.delete()
     9         save_id = transaction.savepoint()  # 创建保存点,记录当前的状态
    10         obj3.save()
    11         try:
    12             obj4.save()
    13         except Exception:
    14             transaction.savepoint_rollback(save_id)   # 如果obj4操作失败,可以回滚到保存点obj2.save()以后。,即使obj4失败,obj2.save()还可以继续提交
    15        
    16         transaction.savepoint_commit(save_id)   # 这条语句可以控制提交从保存点到当前状态的所有数据库事务操作

    注意:使用保存点,可以更精确地控制数据库操作的保存点和回滚状态及提交操作。

django中使用mysql的事务

原文:https://www.cnblogs.com/xshan/p/12766240.html

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

django中使用mysql的事务

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

django中使用mysql的事务

事务简介  在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。  事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。  事务用来管理 insert,update,delete 语句  一般来说
django中使用mysql的事务
2019-06-17

django+mysql的使用

Django中每一个模型model都对应于数据库中的一张表,每个模型中的字段都对应于数据库表的列。方便的是,django可以自动生成这些create table, alter table, drop table的操作。其次Django为咱们
2023-01-30

怎么在Django中使用transaction管理事务

本篇文章给大家分享的是有关怎么在Django中使用transaction管理事务,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. transaction事务内不执行数据库的c
2023-06-14

MySQL 如何使用事务

基础知识 事务是指对一组 SQL 语句进行一个原子化的操作,即如果这一组 SQL 语句中有一条发生错误,那么其他的同组 SQL 就都不会被执行。 你可以把它当作一个测试,当你执行完一组 SQL 语句后,可以查看一下结果是否正确,如果正确后可
2022-05-17

MySql事务的简单使用 - 纪宇

4个特性原子性:一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(rollback)到事务开始前的状态一致性:在事务开始前和事务结束以后,数据库的完整性没有被破坏。例如A和B之间的转账,不论转多少次
2021-06-25

Django中间件的使用

中间件(middleware)中间件应用于request与服务端之间和服务端与response之间,客户端发起请求到服务端接收可以通过中间件,服务端返回响应与客户端接收响应可以通过中间件,也就是说中间件可以处理request和respons
2023-01-30

mysql存储过程中怎么使用事务

在 MySQL 存储过程中,可以使用 START TRANSACTION 或者 BEGIN 语句开始一个事务,并使用 COMMIT 语句提交事务,或者使用 ROLLBACK 语句回滚事务。下面是一个示例,演示如何在 MySQL 存储过程中
2023-10-24

Django中如何使用django-celery完成异步任务

这期内容当中小编将会给大家带来有关Django中如何使用django-celery完成异步任务 ,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Django中如何使用django-celery完成异步任务
2023-06-04

django框架使用mysql步骤

在创建好django项目的基础上来讲解使用orm框架注意:首先在mysql中手动或者通过命令创建一个数据库,我先创建一个名为orm的数据库。1:在项目文件夹中的settings.py文件中配置mysql数据库链接字符串及时区配置# 注册ap
2023-01-30

django中使用memcache的一些

最近写django项目时在保存验证码方面要用到memcached,于是便查看了一些教程进行操作,结果确遇到了一系列问题,以下是一些容易遇到的雷区:1.windows下memcached安装:-windows下memcached安装包是一个e
2023-01-30

几个django 2.2和mysql使用

可能是由于Django使用的MySQLdb库对Python3不支持,我们用采用了PyMySQL库来代替,导致出现各种坑,特别是执行以下2条命令的是时候:python manage.py makemigrationsorpython mana
2023-01-31

Django中shell命令的使用

shell工具 Django的manage工具提供了shell命令,帮助我们配置好当前工程的运行环境(如连接好数据库等),以便可以直接在终端中执行测试python语句。 通过如下命令进入shellpython manage.py shell
2022-06-04

MySQL中的事务和MVCC

本篇博客参考掘金小册——MySQL 是怎样运行的:从根儿上理解 MySQL以及极客时间——MySQL实战45讲。虽然我们不是DBA,可能对数据库没那么了解,但是对于数据库中的索引、事务、锁,我们还是必须要有一个较为浅显的认识,今天我就和大家聊聊事务。为什么要有
MySQL中的事务和MVCC
2014-11-23

编程热搜

目录