db.create_all() 未在所需目录中创建数据库

问题描述 投票:0回答:1

我正在尝试在项目的主目录中为 Flask 应用程序创建一个数据库。这是我初始化数据库的代码:

app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///users.db'
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)

Flask 需要应用程序上下文,所以这就是我创建数据库的方式:

$ flask shell
>>> db.create_all()

我也尝试这样做:

$ python
>>> from app import app, db
>>> app.app_context().push()
>>> db.create_all()

这两个选项都会在 /instance 目录中创建数据库。有没有办法解决这个问题并在项目的主目录中创建它?

sqlite flask flask-sqlalchemy
1个回答
3
投票

实例路径是数据库的首选和默认位置。出于安全原因,我建议您使用这个。但是,也可以选择另一种解决方案,其中在配置中指定路径的完整长度。

以下配置对应于过时的变体,其中数据库是在当前工作目录中创建的。请不要再使用这个了。

app.config['SQLALCHEMY_DATABASE_URI'] ='sqlite:///' + os.path.join(os.getcwd(), 'users.db') 

这对应于当前的解决方案。

app.config['SQLALCHEMY_DATABASE_URI'] ='sqlite:///' + os.path.join(app.instance_path, 'users.db')
© www.soinside.com 2019 - 2024. All rights reserved.