pymysql - 为什么 python 脚本循环没有从数据库中获取更新的数据?
问题描述
我有两个 Python 脚本。他们都使用 PYMYSQL 在 MySQL DB 的表上读取/写入数据。
脚本 1:它在无限循环中运行,每秒从外部 API 获取数据,并通过 UPDATE SQL Query 将其更新到 MySQL DB 的表中。它工作得很好。我可以在数据库级别看到数据每秒都在更新。
脚本 2:它在无限循环中运行,从上面提到的 MySQL DB 表中获取数据,并通过 SELECT SQL Query 打印出来。当我第一次运行它时,它会从数据库中获取正确/更新/最新的数据,但是之后当它在 while 循环上迭代时,它会获取它在第一次启动时获取的相同数据并且不获取更新的数据. 但它应该获取更新的数据,因为脚本 1 每秒都在不断更新 DB 上的数据。但是如果我停止脚本并重新启动,那么它会显示更新的数据。
我只是想知道原因或解决相同的问题。似乎当我重新启动脚本时为脚本 2 重新启动数据库连接时,它会获取最新数据。
请帮助。
解决方案
我找到了解决方法。可以应用以下任何一种。
- 将 autocommit=True 添加到 connect() 参数中。
- 在 cursor.execute() 命令之后调用 conn.commit()。
此处提到的可重复阅读:https ://dev.mysql.com/doc/refman/8.0/en/glossary.html#glos_consistent_read
推荐阅读
- c# - 启动Windows服务的正确方法
- java - 从 C++ 到 C++ 回调的 Java 回调
- javascript - .Net:将值从 JavaScript 传递到 C# 而无需回发
- dfsort - 使用 JCL 屏蔽中间数字
- python - Python中的类问题连接SQL Server
- laravel - Laravel - 使用 php artisan make:migration 一次将两列添加到现有表中
- css - 使高度适应其内容
- javascript - 通过 Chrome 扩展程序避免跨域策略
- javascript - 我不断得到gt; 使用子字符串或切片时
- r - 对不同长度的数据帧求和