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

wgx48brx  于 2022-11-24  发布在  SQLite
关注(0)|答案(1)|浏览(161)

我正在项目的主目录中为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 * 目录中创建数据库。有没有办法绕过这个问题,在项目的主目录中创建数据库?

w80xi6nr

w80xi6nr1#

示例路径是数据库的首选和默认位置。出于安全原因,我建议您使用此路径。但是,也可以选择在配置中指定路径全长的替代解决方案。
以下配置对应于一个过时的变体,其中数据库是在当前工作目录中创建的。请不要再使用此配置。

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')

相关问题