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

Flask应用中SQLite数据库相对路径配置问题求助

解决Flask中SQLite相对路径跨机器连接问题

问题核心是你用的相对路径基于运行Flask时的工作目录,而非main.py所在的App文件夹,导致换机器或启动目录变化时路径失效。以下是可靠的跨机器解决方案:

方案1:使用pathlib(Python 3.4+推荐)

利用__file__获取当前main.py的绝对路径,再构建数据库文件的路径,完全脱离工作目录限制:

from pathlib import Path
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
# 获取main.py所在的App文件夹路径
app_root = Path(__file__).parent
# 构建db文件夹和数据库文件的完整路径
db_path = app_root / "db" / "App.db"
# 转换为SQLAlchemy需要的URI格式
app.config['SQLALCHEMY_DATABASE_URI'] = f"sqlite:///{db_path}"
db = SQLAlchemy(app)

方案2:使用os.path(兼容旧版Python)

如果你的Python版本低于3.4,用os.path模块实现相同逻辑:

import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
# 获取main.py所在的App文件夹路径
app_root = os.path.dirname(os.path.abspath(__file__))
# 构建数据库文件路径
db_path = os.path.join(app_root, "db", "App.db")
app.config['SQLALCHEMY_DATABASE_URI'] = f"sqlite:///{db_path}"
db = SQLAlchemy(app)

额外注意事项

  • 确保App/db文件夹存在:怕部署时遗漏的话,可添加自动创建逻辑:
    # 针对pathlib写法
    (app_root / "db").mkdir(exist_ok=True)
    # 针对os.path写法
    os.makedirs(os.path.join(app_root, "db"), exist_ok=True)
    
  • 无需手动调整工作目录:上述方案完全基于项目文件结构生成路径,只要项目目录结构不变,在任意机器上运行都能正常连接数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:05:00