》了解事务
数据库的操作,比如银行转帐
一方扣款,一方收款
两个操作要么同时完成,要么同时不完成
这就是事务
》通过例子了解
创建一个数据库
插入数据
新建了两个用户,让他们有资金
开始事务
》事务
操作时开两个mysql客户端,一个操作事务,一个实时查询
观注一下是否有变化
开始事务的操作
start transaction
如果发生了错误,可以回滚
rollback
金额回到了从前
再完整的再操作一次
先从一个人扣钱
再从另一个人帐户上加钱
提交事务
commit
》通过python来处理事务
代码分析
本代码中模拟了几个sql语句的操作
明确这样几个点
游标对象.execute(sql语句)
只是准备执行,语句并未真正的生效
只有数据库的连接对象 commit()了以后
才真的生效了
代码中通过raise Exception模拟了一个错误
在错误发生后,进处异常处理代码块
通过回滚,让操作回到最近一次commit的地方
防止多余的操作
详情先分析代码再做小结
》小结
pymysql的操作都是基于事务的
sql语句执行后一定要commit才会真真景响到数据库
让数据库的连接对象commit
如果发生错误,可以通过连接对象的rollback()返回
》继续关于mysql的事务
先创建表和插入数据
然后rollback
问题? 这三条数据是否有插入成功到数据库中
答案:
有插入。原因需要明确
开启事务
插入数据
提交,让数据真正的存进去
开始存档操作,savepoint保留点
- 同时开启一个横向的时间图,把数据和存档点记录一下
》读取存档,回到存档点
回到保留点,存档1的位置