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

Flask SQLAlchemy无法通过相对路径连接SQLite数据库求助

问题原因
  • SQLite的相对路径是基于Python解释器的当前工作目录,而非Flask应用脚本所在的目录。如果你在项目目录外执行启动命令,sqlite:///market.db会在当前工作目录创建或查找数据库文件,而非你预期的app所在目录,导致无法找到已有数据库(或创建了新的空数据库),表现为连接失败。
  • 绝对路径直接指定了文件的精确位置,不受工作目录影响,因此能正常连接。
正确的数据库连接实现

利用Flask提供的app.root_path(它会指向Flask应用实例所在的目录)来构建数据库路径,这样无论你从哪个目录启动应用,路径都是准确的:

from flask import Flask, render_template, url_for
from flask_sqlalchemy import SQLAlchemy
import os

app = Flask(__name__)
# 基于应用根目录构建数据库路径
db_file_path = os.path.join(app.root_path, 'market.db')
app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{db_file_path}'
db = SQLAlchemy(app)

你也可以直接简化成一行:

app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{os.path.join(app.root_path, "market.db")}'

如果想确认当前工作目录是否正确,可以在代码中加入以下语句排查:

import os
print("当前工作目录:", os.getcwd())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:52:11