app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘sqlite:////data.db’创建在当前目录下

在 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.abspathos.path.dirname 来获取当前文件(通常是你的 Flask 应用的主模块文件)的绝对路径,然后使用 os.path.join 来构建数据库文件的完整路径。这样,无论应用在哪里运行,数据库文件 data.db 都会被创建在应用的当前目录下。

请注意,app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 这一行是用来关闭 SQLAlchemy 的修改跟踪,这可以避免在生产环境中记录不必要的信息,从而提高性能。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注