首页 > 解决方案 > Python刷新sqlite3连接以检索最新值

问题描述

我有一个 Djanjo 应用程序,它允许用户输入提交到数据库的数据。

通过在同一台机器上运行的 python 脚本立即访问该数据库。

设想

  1. 用户从 Raspberry Pi (RPi) 登录 Django 网站
  2. 用户输入所需的数据。
  3. 数据提交到数据库。
  4. 用户按下连接到 RPi 的按钮,提示数据库查询。
  5. 单独的 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 秒才能读取新值。

标签: pythondjangodatabasesqlite

解决方案


在读取之前执行 aconn.commit()应该使您的连接会话保持最新。然后您将看到数据的最后状态。


推荐阅读