con.start_transaction()写不写有什么区别呢
之前在navicat直接写sql语句不开启事务,其实是自动开启一个事务对吧
那用python创建MySQL连接,执行一个sql语句,con.start_transaction()开启的事务没有隔离级别,那和不写con.start_transaction()有什么区别呢
正在回答 回答被采纳积分+1
同学你好:
1、如果是mac版本在navicat直接写入sql语句的时候,可以设置自动开启事务,也可以不设置。
如果是windows系统同学也可以在navicat中输入show variables like 'autocommit 可以先看一下事务是否是自动提交的。
如果查出来是ON,表明事务是自动提交的,修改数据之后不用自己提交。如果是OFF的话,就需要把自动提交先先打开了。navicat中是默认开启事务的,但不是说写sql的时候navicat就一定是开启事务的,也可以设置为不开启。
2、同学可以这样理解事务的基本要素(原子性,一致性,隔离性,持久性)
原子性:事务中的所有操作作为一个整体像原子一样不可分割,要么全部成功,要么全部失败
一致性:一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。
隔离性:执行的事务不会相互影响,比如多个用户同时往一个账户转账,最后账户的结果应该和他们按先后次序转账的结果一样。
持久性:事务一旦提交,其对数据库的更新就是持久的,任何事务或系统故障都不会导致数据丢失。
所以同学可以理解为这里只是没有设置隔离级别,但是开启事务不仅对数据有隔离性,还有其他的特性
如果我的回答解决了同学的疑惑,欢迎采纳,祝同学学习愉快!
- 参与学习 人
- 提交作业 625 份
- 解答问题 2669 个
数据库作为企业储存和管理数据的根本,掌握数据库是每个开发工程师必备的技能,本阶段带你学会用Python操作MySQL、Redis和MongoDB三大主流数据库。夯实数据库基础。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星