在使用innodb引擎的mysql数据库中,python脚本插入问题
我遇到了一个问题,我想把数据从一个Python脚本添加到使用InnoDB引擎的MySQL数据库里。这个操作在使用MyISAM引擎的数据库上运行得很好。但是,MyISAM引擎有个问题,就是它不支持外键,这样我每次想在数据库里插入或删除记录的时候,就得额外写很多代码。
有没有人知道为什么InnoDB在Python脚本中不工作,以及可能的解决办法是什么呢?
2 个回答
4
Python数据库API默认关闭自动提交
摘自谷歌(第一页,第二个结果)
MySQL :: MySQL 5.0参考手册 :: 13.2.8 InnoDB ... 默认情况下,MySQL为每个新连接启动会话时会开启自动提交... dev.mysql.com/.../innodb-transaction-model.html
但是
显然,Python在连接MySQL时是以非自动提交模式启动的,见:
http://www.kitebird.com/articles/pydbapi.html
来自这篇文章:
连接对象的commit()方法会将当前事务中所有未提交的更改保存到数据库中,使其变为永久性。在数据库API中,连接开始时自动提交模式是关闭的,所以在断开连接之前你必须调用commit(),否则更改可能会丢失。
真糟糕,我不知道怎么解决这个问题,也不想随便猜测来误导你。我建议你开一个新问题,标题可以是:
如何在MySQL的Python数据库API中启用自动提交模式?
祝你好运。
6
InnoDB是一种支持事务的数据库。这意味着在你进行插入、删除或更新操作后,需要调用connection.commit()来确认这些操作。
补充一下:你可以通过调用connection.autocommit(True)来开启自动提交功能,这样就不需要每次手动确认了。