python-mysql事务
MySQL 事务
MySQL 事务主要用于处理操作量大,复杂度高的数据。简单的理解就是:完成一件事情的多个mysql语句的集合就是一个事务了,可能有人会想,我的mysql本来就是一句一句语句执行的啊,为什么要弄什么事务呢?但是在日常生活中,比如张三有15620元钱(在支付宝上面),李四有240元,现在张三要给李四转600元。这时候我们需要数据库中,在张三的15620上减掉600,在李四的240上面加上600。这是俩个mysql的语句,但是如果我们执行的时候,在减掉张三的语句成功执行之后,第二句语句执行失败(因为某一种原因)。那是不是这600块就凭空消失了呢?很明显,支付宝不可能让这样的事情发生。所以我们要把这俩个语句绑在一块,要么一起执行成功,要么就都执行失败。至于怎么做到这个 就看后面的了
执行事务
事务机制可以确保数据一致性。
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
- 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
- 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
- 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
- 持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。commit()方法游标的所有更新操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。(在上一个笔记上面写了mysql语句在python中的使用)
以上面转账为例:
1
2
3 4 5 #!/usr/bin/python 6 7 # -*- coding: UTF-8 -*- 8 9 import MySQLdb 10 11 #包的导入 12 13 db = MySQLdb.connect("ip地址,本机为localhost","用户名","密码","表名") 14 15 #打开数据库的连接 16 17 cursor = db.cursor() 18 19 #使用cursor()方法获得操作游标 20 21 try: 22 # 执行sql语句 23 cursor.execute("update account set money=money-600 where name='zhangsan'") 24 cursor.execute("update account set money=money+600 where name='lisi'") 25 # 提交到数据库执行 26 db.commit() 27 except: 28 # 发生错误时回滚 回滚到获取游标的位置开始重新执行 看代码上面的文字有说明 29 db.rollback() 30 31 db.close() 32 33 #关闭数据库的连接
作者:红雨
出处:https://www.cnblogs.com/52why
微信公众号: 红雨python