在使用innodb引擎的mysql数据库中,python脚本插入问题

3 投票
2 回答
1252 浏览
提问于 2025-04-16 15:40

我遇到了一个问题,我想把数据从一个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)来开启自动提交功能,这样就不需要每次手动确认了。

撰写回答