在 Flask 应用中,当你设置 SQLALCHEMY_DATABASE_URI
配置项为 'sqlite:////data.db'
时,你告诉 SQLAlchemy 使用 SQLite 数据库,并且数据库文件名为 data.db
。SQLite 的数据库是一个单一的文件,因此你不需要像其他数据库那样设置主机名、用户名或密码。
'sqlite:////data.db'
中的四个斜杠意味着:
- 第一个和第二个斜杠:指定数据库类型为 SQLite。
- 第三个和第四个斜杠:指定数据库文件的路径。在这里,路径是相对于 Flask 应用的当前工作目录。
如果你想要确保数据库文件创建在 Flask 应用的当前目录下,你可以使用以下配置:
import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 使用 url_for 时需要设置静态文件夹
app.config['STATIC_FOLDER'] = 'static'
# 获取当前文件的路径
basedir = os.path.abspath(os.path.dirname(__file__))
# 设置数据库文件的路径为当前目录下的 data.db
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.db')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
# 确保在应用上下文中创建数据库
with app.app_context():
db.create_all()
# 其余的代码...
在这个示例中,我们使用 os.path.abspath
和 os.path.dirname
来获取当前文件(通常是你的 Flask 应用的主模块文件)的绝对路径,然后使用 os.path.join
来构建数据库文件的完整路径。这样,无论应用在哪里运行,数据库文件 data.db
都会被创建在应用的当前目录下。
请注意,app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
这一行是用来关闭 SQLAlchemy 的修改跟踪,这可以避免在生产环境中记录不必要的信息,从而提高性能。
发表回复