我有一个 Djanjo 应用程序,它允许用户输入提交到数据库的数据。
可以通过在同一台机器上运行的 python 脚本立即访问该数据库。
场景
- 用户从 Raspberry Pi (RPi) 登录 Django 网站
- 用户输入所需的数据。
- 数据提交到数据库。
- 用户按下连接到 RPi 的按钮,提示数据库查询。
- 单独的 python 脚本根据用户输入执行计算。
我的问题是,如果在步骤 3 之后立即执行步骤 4,查询不会获取用户输入的最新数据,而是数据库中已存储的先前数据。
如果用户在 30 秒后按下按钮,则查询将成功执行。
我从数据库中获取最新数据的代码:
conn = sqlite3.connect('Line3_Data.db')
c = conn.cursor()
c.execute("SELECT tact FROM LineOEE03 ORDER BY tact desc limit 1")
current_tact = c.fetchone()
tact
-----------------
45 <- old value retrieved
60 <- new value from step 3 not retrieved
60 <- new value from step 3 not retrieved
有什么方法可以刷新连接以确保只检索到最新的值吗?
编辑
写入数据库的速度非常快。刷新 sqlitebrowser
时立即可见。刷新 sqlitebrowser
后,检查写入是否已发生,旧值仍被检索。
读取新值需要大约 30 秒。
最佳答案
在读取之前执行 conn.commit()
应该可以使您的连接 session 保持最新。然后你会看到数据的最后状态。
关于Python 刷新 sqlite3 连接以检索最新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52003091/