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

Python操作SQLite遇sqlite3.OperationalError:listinfo表不存在,调试模式正常

问题分析与解决办法
  • 核心原因:你代码里已经计算出了数据库的绝对路径db_dir,但实际连接时却用了相对路径"app.db"。调试时IDE默认以脚本所在目录为工作目录,能正确找到带listinfo表的数据库;但直接运行脚本时,工作目录可能是你启动脚本的路径(比如命令行当前目录),这时会在该路径下新建一个空的app.db,自然找不到listinfo表。

  • 解决步骤:把连接数据库的路径改成你已经计算好的绝对路径db_dir,这样无论在什么环境下运行,都会连接到脚本同一目录下的app.db。

修改后的代码:

import sqlite3
import os.path
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
db_dir = os.path.join(BASE_DIR, 'app.db')  # 用os.path.join更跨平台,避免手动拼接路径的问题
def getalldate():
    db = sqlite3.connect(db_dir)  # 使用绝对路径连接
    cr = db.cursor()
    cr.execute("SELECT * FROM listinfo")
    result = cr.fetchall()
    print(result)
    db.close()  # 建议用完数据库后关闭连接
getalldate()

额外提示:尽量用os.path.join拼接路径,比手动加斜杠更适配Windows、Linux等不同系统,避免路径分隔符的兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:30:55