mysql 中的事务提交

autocommit 的阐明

默认autocommit=ON 是开启的,开启状态下如果没有显示的的进行事务begin, 每条sql 语句都会主动提交事务; 敞开状态下, 如果没有手动进行commit, 那么sql 不会提交;
  1. show variables like 'autocommit';
  2. set @@autocommit=1;

begin 与autocommit 的关系;

begin 显示的开启事务,会禁用autocommit;

屡次begin

如果第一个begin 事务没有被动提交,第二个begin会提交第一个begin 的事务;

pymysql 中的事务提交;

autocommit 的阐明

默认pymysql 的连贯, autocommit=False 的,因而须要手动提交commit, 否则你的sql将不会提交哦
  1. pymysql 的autocommit 实质上,是连贯通过批改mysql 的autocommit 属性来实现的;
  2. 可通过Connection 的初始化参数autocommmit 来批改默认配置;

避免屡次begin 的解决

因为个别应用pymysql,会搭配连接池来应用,因为如果一个线程,begin的事务处理到一半,产生了异样,你只是开释了连贯(开释的解决中没有rollback操作),没有进行rollback, 另外一个线程获取到这个连贯后进行begin,会造成后面一个事务进行提交,从而可能产生脏数据;
  1. 通常,咱们会解决__exit__ 办法,当产生异样是,进行rollback;