python - Python mysql自动提交对phpmyadmin不可见的数据
问题描述
我运行一个程序,将相当简单的记录添加到 mariaDB 数据库表中。自从我添加了以下代码:
connection.autocommit = True
我添加的新数据在 phpymadmin 中不再可见。我仍然可以通过程序与所述数据进行交互,但是 Phpmyadmin 中的记录数永远不会增加,我无法在其中找到数据。旧数据也还在。
我使用了自动提交,因为我认为它是一个绕过在我的代码中分别手动提交每个查询的过程的功能,但它的作用可能比我意识到的要多。
有没有办法在 Phpmyadmin 中显示新记录,以便我可以再次与它们交互?
编辑:
我开始意识到
connection.autocommit = True
是正确的代码,但我试图在光标上执行它,而不是连接。对于阅读本文的任何人,请确保不要尝试将 cursor.autocommit 设置为 True。
解决方案
你想要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 它将帮助您了解发生了什么。关键是允许您更改数据库中的几行,以便它们看起来都立即更改为其他程序。
推荐阅读
- flutter - 如何刷新页面数据API在flutter中动态获取数据
- sql - Oracle SQL - 结果为空时使用合并
- c++ - 用于 const 类型和表达式的 VScode C++ 调试
- sql - 根据其他列的值选择总和
- autohotkey - 向浏览器窗口自动热键发送关键事件的问题
- javascript - 意外的令牌“this”(javascript)
- javascript - 如何在shaka播放器上使用自定义视频控制组件,如播放、暂停、静音等?
- html - CSS 让滚动条占据自己的空间而不覆盖页面内容
- python - 在高速公路组件中捕获连接错误
- javascript - SyntaxError: Cannot use import statement when following vue-test-utils 官方教程