首页 > 解决方案 > Python mysql自动提交对phpmyadmin不可见的数据

问题描述

我运行一个程序,将相当简单的记录添加到 mariaDB 数据库表中。自从我添加了以下代码:

connection.autocommit = True

我添加的新数据在 phpymadmin 中不再可见。我仍然可以通过程序与所述数据进行交互,但是 Phpmyadmin 中的记录数永远不会增加,我无法在其中找到数据。旧数据也还在。

我使用了自动提交,因为我认为它是一个绕过在我的代码中分别手动提交每个查询的过程的功能,但它的作用可能比我意识到的要多。

有没有办法在 Phpmyadmin 中显示新记录,以便我可以再次与它们交互?

编辑:

我开始意识到

connection.autocommit = True

是正确的代码,但我试图在光标上执行它,而不是连接。对于阅读本文的任何人,请确保不要尝试将 cursor.autocommit 设置为 True。

标签: pythonmysqlphpmyadminmariadbautocommit

解决方案


你想要connection.autocommit(True)自动提交。

或者,在创建连接时指定它。

您描述的行为是您不提交时会发生的情况。

如果您不想使用自动提交,您可以在一系列 INSERT / UPDATE / DELETE 操作后提交它们: connection.commit() 然后,其他 MySQL 连接,如您的 phpmyadmin,将能够看到新数据。

或者,如果您决定不想提交您的操作,您可以这样做connection.rollback()

在 Python 的 MySQL API 中,自动提交是关闭的,除非你打开它。

请注意,未提交的数据并没有像您所说的那样存储在您的程序中。它在 MySQL 中,并且对将它放在那里的连接可见。它只是对其他 MySQL 连接不可见。

请研究这个:https ://dev.mysql.com/doc/refman/8.0/en/commit.html 它将帮助您了解发生了什么。关键是允许您更改数据库中的几行,以便它们看起来都立即更改为其他程序。


推荐阅读