You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派Python SQLite脚本终端运行报错:找不到measure表

问题分析与解决方案

这个问题的核心是SQLite数据库文件的路径差异:

  • 在代码编辑器中运行脚本时,编辑器默认的工作目录是脚本所在的Desktop文件夹,此时连接的是Desktop/hygolog.db——这个文件里已经创建好了measure表,所以运行正常。
  • 但在终端执行时,你的当前工作目录是用户主目录/home/user/,执行db.connect('hygolog.db')会在主目录下生成一个全新的空数据库,这个新文件里没有measure表,因此触发报错。

两种解决方法

方法1:直接使用绝对路径连接数据库

在connect方法里指定数据库文件的完整绝对路径,确保无论在哪运行都指向同一个文件:

import sqlite3 as db

# 替换为你实际的数据库文件绝对路径
con = db.connect('/home/user/Desktop/hygolog.db')
cur = con.cursor()

while True:
    cur.execute(f"""INSERT INTO measure
VALUES(datetime('now','localtime'),{round(humidity,3)},{round(temperature,3)})""")
    con.commit()

方法2:动态切换到脚本所在目录

用os模块自动获取脚本的存放路径并切换工作目录,让相对路径始终指向正确位置:

import sqlite3 as db
import os

# 获取脚本所在的文件夹路径
script_dir = os.path.dirname(os.path.abspath(__file__))
# 切换到脚本所在目录
os.chdir(script_dir)

con = db.connect('hygolog.db')
cur = con.cursor()

while True:
    cur.execute(f"""INSERT INTO measure
VALUES(datetime('now','localtime'),{round(humidity,3)},{round(temperature,3)})""")
    con.commit()

额外提醒:你代码里的tempertaure是拼写错误(正确应为temperature),虽然不影响当前报错,但建议修正避免后续潜在问题。

内容的提问来源于stack exchange,提问作者flowerboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 08:59:14