首页 > 解决方案 > 为什么 python 脚本循环没有从数据库中获取更新的数据?

问题描述

我有两个 Python 脚本。他们都使用 PYMYSQL 在 MySQL DB 的表上读取/写入数据。

脚本 1:它在无限循环中运行,每秒从外部 API 获取数据,并通过 UPDATE SQL Query 将其更新到 MySQL DB 的表中。它工作得很好。我可以在数据库级别看到数据每秒都在更新。

脚本 2:它在无限循环中运行,从上面提到的 MySQL DB 表中获取数据,并通过 SELECT SQL Query 打印出来。当我第一次运行它时,它会从数据库中获取正确/更新/最新的数据,但是之后当它在 while 循环上迭代时,它会获取它在第一次启动时获取的相同数据并且不获取更新的数据. 但它应该获取更新的数据,因为脚本 1 每秒都在不断更新 DB 上的数据。但是如果我停止脚本并重新启动,那么它会显示更新的数据。

我只是想知道原因或解决相同的问题。似乎当我重新启动脚本时为脚本 2 重新启动数据库连接时,它会获取最新数据。

请帮助。

标签: pymysql

解决方案


我找到了解决方法。可以应用以下任何一种。

  1. 将 autocommit=True 添加到 connect() 参数中。
  2. 在 cursor.execute() 命令之后调用 conn.commit()。

此处提到的可重复阅读:https ://dev.mysql.com/doc/refman/8.0/en/glossary.html#glos_consistent_read


推荐阅读