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

如何让Flask的db.create_all()在项目主目录创建数据库

Flask SQLite数据库生成路径调整问题

你当前配置的sqlite:///users.db会被Flask默认解析到instance文件夹,这是Flask实例文件夹机制导致的行为。要让数据库生成在项目主目录,可通过以下两种方式调整:

方式一:动态获取项目主目录(推荐)

利用Flask app的root_path属性获取项目主目录的绝对路径,拼接数据库文件名,确保路径始终指向项目根目录:

import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
# 拼接项目主目录与数据库文件名
db_file_path = os.path.join(app.root_path, "users.db")
app.config["SQLALCHEMY_DATABASE_URI"] = f"sqlite:///{db_file_path}"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)

方式二:直接指定绝对路径

如果明确知道项目主目录的绝对路径,可直接写入URI(注意格式:Unix系统用四个斜杠开头,Windows用三个斜杠加盘符):

# Unix/Linux/macOS示例
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:////home/yourname/your-flask-project/users.db"

# Windows示例
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///C:/Users/yourname/your-flask-project/users.db"

修改配置后,再执行db.create_all()(不管用flask shell还是Python交互模式),users.db就会生成在项目主目录下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:01:19