python - Python刷新sqlite3连接以检索最新值
问题描述
我有一个 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 秒才能读取新值。
解决方案
在读取之前执行 aconn.commit()
应该使您的连接会话保持最新。然后您将看到数据的最后状态。
推荐阅读
- asp.net-mvc - ASP.NET MVC 应用程序 ORA-01882: 未找到时区
- css - 有没有办法设置导入的库,使其忽略我的自定义 CSS?
- javascript - Vue(打字稿)考虑重命名属性
- windows - 在 Windows 上使用 CMD 从文件目录中删除特定子字符串
- python - 在本地环境中调用 getResolvedOptions() 会生成 KeyError
- javascript - Vue生命周期和firebase:为什么我会得到“TypeError:无法读取null的属性'url'”?
- css - 如何在 Solidworks 的 SVG 样式表中更改透明度
- javascript - React 使用状态数组不更新
- java - 如何使用嵌套泛型将 json 反序列化为 Java 对象
- apache-spark - Pyspark:在数据框中用空值替换所有出现的值