mysql 中的事务提交
autocommit 的阐明
默认autocommit=ON 是开启的,开启状态下如果没有显示的的进行事务begin, 每条sql 语句都会主动提交事务; 敞开状态下, 如果没有手动进行commit, 那么sql 不会提交;
- show variables like 'autocommit';
- set @@autocommit=1;
begin 与autocommit 的关系;
begin 显示的开启事务,会禁用autocommit;
屡次begin
如果第一个begin 事务没有被动提交,第二个begin会提交第一个begin 的事务;
pymysql 中的事务提交;
autocommit 的阐明
默认pymysql 的连贯, autocommit=False 的,因而须要手动提交commit, 否则你的sql将不会提交哦
- pymysql 的autocommit 实质上,是连贯通过批改mysql 的autocommit 属性来实现的;
- 可通过Connection 的初始化参数autocommmit 来批改默认配置;
避免屡次begin 的解决
因为个别应用pymysql,会搭配连接池来应用,因为如果一个线程,begin的事务处理到一半,产生了异样,你只是开释了连贯(开释的解决中没有rollback操作),没有进行rollback, 另外一个线程获取到这个连贯后进行begin,会造成后面一个事务进行提交,从而可能产生脏数据;
- 通常,咱们会解决__exit__ 办法,当产生异样是,进行rollback;