我正在尝试在项目的主目录中为 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 目录中创建数据库。有没有办法解决这个问题并在项目的主目录中创建它?
实例路径是数据库的首选和默认位置。出于安全原因,我建议您使用这个。但是,也可以选择另一种解决方案,其中在配置中指定路径的完整长度。
以下配置对应于过时的变体,其中数据库是在当前工作目录中创建的。请不要再使用这个了。
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')