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;