文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

django中使用mysql的事务

2019-06-17 22:13

关注

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

事务简介

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

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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯