【问题标题】:Problem in insertion from python script in mysql database with innondb engine使用innondb引擎从mysql数据库中插入python脚本的问题
【发布时间】:2011-08-04 23:25:54
【问题描述】:

我正面临一个问题,我正在尝试使用 InnonDB 引擎将数据从 python 脚本添加到 mysql 数据库,它与 mysql 数据库的 myisam 引擎一起工作正常。但是 myisam 引擎的问题是它不支持外键,所以我必须在每个我想在数据库中插入/删除记录的地方添加额外的代码。

有谁知道为什么 InnonDB 不能使用 python 脚本以及这个问题的可能解决方案吗??

【问题讨论】:

  • 您面临的问题是什么?你有一些错误信息吗?你能把它们寄给我们吗?
  • “InnoDB 不适用于 Python 脚本”是什么意思?我用过它一直都很好用。
  • @Daniel 在非自动提交模式下,如果您在提交之前断开连接,MySQL 会将您的更新扔出窗口。对我来说听起来很无聊。
  • 不完全破坏,因为行为是故意的。虽然当连接关闭时,如果有正在进行的事务,python dbapi 可能会发出警告。
  • 如果它解决了您的问题,请不要忘记接受答案。

标签: python mysql innodb myisam


【解决方案1】:

InnoDB 是事务性的。您需要在插入/删除/更新后调用 connection.commit()。

编辑:你可以调用connection.autocommit(True)来开启自动提交。

【讨论】:

  • NO 这取决于您的连接参数。您可以将其设置为不自动提交,但自动提交是默认设置。
  • 阅读上面的答案。 Python 禁用自动提交。
【解决方案2】:

Python DB API 默认禁用自动提交

从谷歌粘贴(第一页,第二个结果)

MySQL :: MySQL 5.0 参考手册 :: 13.2.8 InnoDB ... 默认情况下,MySQL 使用自动提交为每个新连接启动会话... dev.mysql.com/.../innodb-transaction-model.html

然而

显然 Python 以 NON-autocommit 模式启动 MySQL,见:
http://www.kitebird.com/articles/pydbapi.html

来自文章:

连接对象 commit() 方法提交当前事务中的任何未完成的更改,以使它们在数据库中永久存在。在 DB-API 中,连接以 autocommit mode disabled 开始,因此您必须在断开连接之前调用 commit(),否则更改可能会丢失。

无赖,不知道如何覆盖它,我不想让你通过猜测误入歧途。 我建议打开一个新问题,标题为:

如何在 MySQL python DB-API 中启用自动提交模式?

祝你好运。

【讨论】:

猜你喜欢
  • 2023-02-05
  • 2021-10-24
  • 2011-08-30
  • 2014-06-25
  • 1970-01-01
  • 1970-01-01
  • 2016-04-13
  • 2012-04-19
  • 1970-01-01
相关资源
最近更新 更多