python使用MySQLdb的小问题

这些天使用python连接Mysql数据库,遇到了在insert和update时,没有返回错误代码,即已经insert或者update成功,但是表单数据没有更新变化的问题。
因为之前已经使用过,能够正常更新,一直很困惑。
在网上找了一些资料后发现,原来在insert和update后,需要commit操作。
那为什么之前不需要呢?
我查看了之前的表单,之前的表单使用的是MyIsam存储引擎,而这个新表单使用的是InnoDB引擎,需要增加commit操作。

那为什么需要增加commit操作呢?

InnoDB是事务性引擎,有个autocommit的变量控制是否自动提交事务。InnoDB默认的autocommit=1,也就是说,每条语句都是一个事务,都会被自动提交。但如果设置autocommit=0,关闭自动提交的话,就需要我们手动commit了。commit之前的所有更新都在一个事务内,如果不commit的话,这些更新都不会生效。

用MySQL的客户端连接时,autocommit=1,是会自动提交的。有意思的是,MySQLdb这个库默认autocommit=0,所以需要手动提交。

参考:MySQLdb autocommit的坑