关于mysql:mysql以及python-中关于事务提交的事项

1次阅读

共计 624 个字符,预计需要花费 2 分钟才能阅读完成。

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;
正文完
 0