树莓派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
相关产品推荐
相关产品推荐

