文档章节

Python 的 MySQLdb 模块插入数据没有成功与 autocommit(自动提交)的关系

catroll
 catroll
发布于 2013/08/30 09:44
字数 508
阅读 7444
收藏 8

欢迎大家访问我自己架的博客站点 码厩技术博客 (Now码厩 http://www.markjour.com/


用 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

 

© 著作权归作者所有

catroll
粉丝 4
博文 9
码字总数 5093
作品 0
武汉
后端工程师
私信 提问
加载中

评论(2)

catroll
catroll 博主

引用来自“Galen_Z”的评论

我看了下你的catroll工作室,挺好的,有机会大家一起交流交流!~
好久没有弄了,有时间会做个升级改版的。
Galen_Z
Galen_Z
我看了下你的catroll工作室,挺好的,有机会大家一起交流交流!~
python的数据库操作

使用python可以很方便的操作数据库,刚刚开始学python,第一个脚本是导出数据库到指定位置,下面简明总结下python的数据库操作 下载安装python环境,下载MySQLdb,MySQLdb是python的数据库操...

晨曦之光
2012/04/13
182
0
Python3 - 操作MySQL数据库

  在Python3中可以使用pymysql连接操作MySQL数据库。      安装   pip install pymysql   使用   1、创建连接   使用pymysql.Connect()方法创建连接,参数类型说明 :   hos...

linux运维菜
2018/11/14
0
0
Python全栈 MySQL 数据库 (引擎、事物、pymysql模块、orm)

每天坚持手写 一天一篇 决定坚持几年 为了梦想为了信仰   开局一张图 存储引擎(处理表的处理器) 基本操作: 查看所有存储引擎 show engines; 查看已有表的存储引擎 show create table 表...

ParisGabriel
2018/08/03
0
0
Python Mysql 数据库操作

本文实例讲述了python中MySQLdb模块用法。分享给大家供大家参考。具体用法分析如下: MySQLdb其实有点像php或asp中连接数据库的一个模式了,只是MySQLdb是针对mysql连接了接口,我们可以在p...

toddler
2015/02/10
177
2
python的Mysql数据库连接与操作

! / usr/ bin/ env python #- - encoding: UTF- 8- - "" " 测试MySQL的连接及操作 " "" import MySQLdb connstring= "host='localhost',port=3306,user='root',passwd='*',db='python'" #连接......

啊和
2012/07/26
448
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
5
0
前端技术之:webpack热模块替换(HMR)

第一步:安装HMR中间件: npm install --save-dev webpack-hot-middleware 第二步:webpack配置中引入webpack对象 const webpack = require('webpack’); 第三步:增加devServer配置项: ho......

popgis
昨天
5
0
死磕 java线程系列之线程池深入解析——体系结构

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 Java的线程池是块硬骨头,对线程池的源码做深入研究不仅能提高对Java整个并发编程的理解,也能提高自己...

彤哥读源码
昨天
7
0
虚函数表 图解

虚函数表 图解 p504

天王盖地虎626
昨天
6
0
java反射

学习目标  什么是反射  反射运行原理  了解反射机制的相关类  获取 class 对象的 3 种方式  通过反射获取构造方法并使用  通过反射获取成员变量并调用  通过反射获取成员方法并...

流川偑
昨天
5
2

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部