Python mysql自动提交对phpmyadmin不可见的数据[重复]
Posted
技术标签:
【中文标题】Python mysql自动提交对phpmyadmin不可见的数据[重复]【英文标题】:Python mysql autocommit data invisible to phpmyadmin [duplicate] 【发布时间】:2020-09-12 00:30:15 【问题描述】:我运行一个程序,将相当简单的记录添加到 mariaDB 数据库表中。自从我添加了以下代码:
connection.autocommit = True
我添加的新数据在 phpymadmin 中不再可见。我仍然可以通过程序与所述数据进行交互,但是 Phpmyadmin 中的记录数永远不会增加,我无法在其中找到数据。旧数据也还在。
我使用 autocommit 是因为我认为它是一个功能,可以绕过在我的代码中单独手动提交每个查询的过程,但它的作用可能比我想象的要多。
有没有办法在 Phpmyadmin 中显示新记录,以便我可以再次与它们交互?
编辑:
我已经意识到了
connection.autocommit = True
是正确的代码,但我试图在光标上执行它,而不是连接。对于阅读本文的任何人,请确保不要尝试将 cursor.autocommit 设置为 True。
【问题讨论】:
【参考方案1】:您希望 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它将帮助您了解发生了什么。关键是允许您更改数据库中的几行,以便它们看起来都立即更改为其他程序。
【讨论】:
是否有任何方法可以提交存储在该程序中的数据,或者当我重新启动它时它会被擦除? 请看我的编辑。以上是关于Python mysql自动提交对phpmyadmin不可见的数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章
即使在提交更改后,MySQL-python 连接也看不到在另一个连接上对数据库所做的更改
LAMP的fastcgi方式应用phpmyadm和wordpress
如何始终使用 python 下载最新版本的 phpmyadmin?