如何让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
相关产品推荐
相关产品推荐

