为了账号安全,请及时绑定邮箱和手机立即绑定

except 里的 rollback 是否必须的?

感觉 except 里的 rollback 操作是不是多余的?求解答

会存在其他异常情况么

正在回答

2 回答

不是多余的,本例中的iud三条语句互相联系不大,所以你可能有点误解

比如你要对数据库进行操作如下:

张三要给李四转100块钱

第一步:张三账户里减100块钱

第二步:李四账户里多100块钱

假如这是两条sql语句,但是你在执行的过程中,第一条语句执行成功,第二条语句因为你把李四的卡号输错了,执行报错,但是因为你已经成功的执行了第一条语句,所以这个时候张三账户里已经少了这100块钱,但是又由于第二条语句没有执行,所以李四的账户里并没有加上这100块钱

rollback的作用就是,让这一次操作中的数据回到初始状态,即张三账户没有转出100块钱,李四账户没有收到100块钱

至于别的异常情况。。。我想不到了。。。

0 回复 有任何疑惑可以回复我~
#1

Jimmy 提问者

谢谢!
2017-03-09 回复 有任何疑惑可以回复我~

刚重新看了下视频,try 里的代码块,在 commit 执行之前,对数据库的操作实际上是未生效。也就是说,当扣完张三的 100 块钱,李四的账号输入错误,这时候异常发生,代码流程跳转到了 except 代码块里,因此不会执行到 try 代码块里的 commit 语句,因此,except 里的 rollback 操作,应该是多余的。

当时也是基于这样的一个背景,对 except 的 rollbak 产生了疑惑。

谢谢您的回复!

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Python操作MySQL数据库
  • 参与学习       85011    人
  • 解答问题       171    个

本视频教程讲解Python如何开发MySQL数据库程序

进入课程

except 里的 rollback 是否必须的?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信