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

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;

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理