Python 的 MySQLdb 模块插入数据没有成功与 autocommit(自动提交)的关系
2013-08-30 09:44
756 查看
欢迎大家访问我自己架的博客站点 CatRoll 工作室!
用 MySQLdb 操作数据库,插入数据之后发现数据库中依然为空,不知原因为何。
开启 mysqld 的 log 设置项之后发现日志文档中更有执行 sql 语句,直接复制语句在客户端中执行也没有问题,那么为什么通过 MySQLdb 的插入全部没有结果呢?
我怀疑是 MySQLdb 的问题,在日志文件中仔细的看了一遍运行的所有sql 语句,在建立连接之后还运行了这句:set autocommit=0。这句话的嫌疑很大,因为这个涉及到一个语句提交执行的问题,而且对于 commit 我有点印象,好像以前学习 MySQLdb 的时候,特意注意到了这点。不管怎样,这就找准了关键字:MySQLdb autocommit
根据网上搜到的结果,可以大概了解到,MySQLdb 在连接后关闭了自动提交,自动提交对于 innodb 引擎很重要,没有这个设置,innodb 引擎就不会真正执行语句。
解决的办法:
1、语句末尾加上“COMMIT;”
2、运行完语句,至少在关闭数据库之前提交一下,如:conn.commit()
3、数据库连接建立之后,设置自动提交,如:conn.autocommit(1)
只是不知道为什么 innodb 会这样,可能是因为这是一个事务型数据库引擎,没有提交就不会在服务器上执行,只会缓存在客户端上的缘故吧!
MySQL技术内幕:InnoDB存储引擎
这本书好像出到第二版了,这些关于数据库方面的知识,还是要了解一下的。
参考
1、MySQLdb 插入数据失败?
http://luchanghong.com/database/2012/06/20/mysqldb-insert-data-failed.html
2、MySQLdb Python模块autocommit属性测试及测试过程中关于数据库连接的理解
http://blog.csdn.net/gukesdo/article/details/7026371
用 MySQLdb 操作数据库,插入数据之后发现数据库中依然为空,不知原因为何。
开启 mysqld 的 log 设置项之后发现日志文档中更有执行 sql 语句,直接复制语句在客户端中执行也没有问题,那么为什么通过 MySQLdb 的插入全部没有结果呢?
我怀疑是 MySQLdb 的问题,在日志文件中仔细的看了一遍运行的所有sql 语句,在建立连接之后还运行了这句:set autocommit=0。这句话的嫌疑很大,因为这个涉及到一个语句提交执行的问题,而且对于 commit 我有点印象,好像以前学习 MySQLdb 的时候,特意注意到了这点。不管怎样,这就找准了关键字:MySQLdb autocommit
根据网上搜到的结果,可以大概了解到,MySQLdb 在连接后关闭了自动提交,自动提交对于 innodb 引擎很重要,没有这个设置,innodb 引擎就不会真正执行语句。
解决的办法:
1、语句末尾加上“COMMIT;”
2、运行完语句,至少在关闭数据库之前提交一下,如:conn.commit()
3、数据库连接建立之后,设置自动提交,如:conn.autocommit(1)
只是不知道为什么 innodb 会这样,可能是因为这是一个事务型数据库引擎,没有提交就不会在服务器上执行,只会缓存在客户端上的缘故吧!
MySQL技术内幕:InnoDB存储引擎
这本书好像出到第二版了,这些关于数据库方面的知识,还是要了解一下的。
参考
1、MySQLdb 插入数据失败?
http://luchanghong.com/database/2012/06/20/mysqldb-insert-data-failed.html
2、MySQLdb Python模块autocommit属性测试及测试过程中关于数据库连接的理解
http://blog.csdn.net/gukesdo/article/details/7026371
相关文章推荐
- Python 的 MySQLdb 模块插入数据没有成功与 autocommit(自动提交)的关系
- Python mysqlDB 掉线自动连接 返回插入字典
- Hibernate 自动提交autoCommit一般建议设置成false
- SVN提交svn通过post commit自动更新不成功的问题解决
- 事物默认自动提交AUTOCOMMIT
- python对MySQL进行数据的插入、更新和删除之后需要commit,数据库才会真的有数据操作。(待日后更新)
- Python MySQLdb 使用utf-8 编码插入中文数据
- 新安装的Mysql5.5数据库使用mybatis提示插入数据成功并且主键已经自增,但是数据表中没有数
- oracle数据库自动提交事务(autocommit)
- connection.autocommit自动提交事务
- mysql插入数据mysqlparameters没有成功
- Python MySQLdb 使用utf-8 编码插入中文数据
- 在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线
- sql server 怎么记录最新插入的数据(没有自动增长列)?
- Mysql autoinsert 自动插入数据
- Python MySQLdb 插入数据
- 使用python调用mysql模块插入数据
- oracle数据库自动提交事务(autocommit)为OFF,但事务自动提交了
- 每日MySQL之015:MySQL中的自动提交(autocommit)与savepoint
- Python3.4下使用pymysql插入数据后没有反应的问题