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

Windows环境下SQLAlchemy连接SQLite3绝对路径报无法打开数据库错误

SQLite路径报错解决方案

问题根因

  • __file__被错误添加了引号,os.path.realpath('__file__')实际获取的是当前工作目录下名为__file__的文件路径,并非当前load_engine.py脚本的真实路径。
  • 你的项目中db文件夹和app文件夹为平级关系,原有代码尝试在app目录下查找db子文件夹,与实际目录结构不符。
  • 路径拼接时额外添加了开头的os.path.sep,结合SQLite连接字符串的sqlite:///前缀,最终生成了多斜杠的非法路径,你输出的sqlite:////C:\Users\Jonat\trading\app\db\assets.db就是典型的格式错误。

修正代码

替换你的load_engine函数为以下内容即可,同时支持Windows开发环境和Python Anywhere部署环境:

def load_engine():
    db_file = os.environ.get('database_file')
    # 去掉__file__的引号,获取当前脚本的真实绝对路径
    script_path = os.path.realpath(__file__)
    # 两次dirname跳转:第一次拿到app目录,第二次拿到项目根目录(db文件夹所在目录)
    project_root = os.path.dirname(os.path.dirname(script_path))
    # 拼接得到db文件的绝对路径
    db_path = os.path.join(project_root, "db", db_file)
    # 生成连接引擎,SQLAlchemy会自动处理跨平台路径适配
    engine = create_engine(f"sqlite:///{db_path}")
    return engine

验证方法

生成引擎前可打印db_path的值,确认与你本地assets.db的实际存放路径一致即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:15:08