Flask-SQLAlchemy 是一个 Flask 扩展,他将 SQLAlchemy 集成到 Flask 应用程序中,提供了快速而简单的方式来创建和管理数据库模型。它的主要内容包括:
-
数据库配置:Flask-SQLAlchemy 提供了一个类似于 SQLAlchemy 的配置方式,你可以轻松地指定数据库连接的 URL,比如 MySQL 或 PostgreSQL。
-
模型定义:Flask-SQLAlchemy 支持使用 Python 类来定义数据库模型。类对应于数据库表,属性对应于表字段。
-
数据库操作:Flask-SQLAlchemy 提供了丰富的操作数据库的 API,比如增删改查、事务等。
-
数据库迁移:Flask-SQLAlchemy 提供了集成 Alembic 的功能,可以方便地进行数据库迁移。
-
查询构建:Flask-SQLAlchemy 支持 SQL 查询的构建,同时也提供了直接使用 ORM 的方式来查询数据库。
-
事件扩展:Flask-SQLAlchemy 支持事件扩展,你可以通过事件来拦截数据库操作,比如在写入数据库之前进行一些数据处理。
初始化扩展
这段代码是设置 Flask 应用程序使用 SQLAlchemy ORM 的基础配置。
# 导入 Flask 框架和 Flask-SQLAlchemy 扩展
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
# 导入 SQLAlchemy ORM 的基础类
from sqlalchemy.orm import DeclarativeBase
# 定义一个继承自 DeclarativeBase 的基类,用于创建映射类
class Base(DeclarativeBase):
pass
# 初始化 Flask-SQLAlchemy 扩展,指定模型类的基类为自定义的 Base 类
db = SQLAlchemy(model_class=Base)
在这段代码中,Base
类是一个空的类,它继承自 DeclarativeBase
,这是 SQLAlchemy ORM 的一个基础类,用于定义映射到数据库表的类。db
对象是 Flask-SQLAlchemy 的一个实例,它用于管理数据库会话和模型。通过将 model_class
参数设置为自定义的 Base
类,所有的模型都将继承自这个基类,从而能够使用 SQLAlchemy ORM 的功能。
配置扩展
这段代码是创建 Flask 应用程序并配置 SQLite 数据库的示例。
# 创建 Flask 应用实例
app = Flask(__name__)
# 配置 SQLite 数据库的 URI(数据库路径)
# "sqlite:///project.db" 表示创建一个名为 "project.db" 的 SQLite 数据库文件
# 该文件位于 Flask 应用的实例文件夹中
# 如果实例文件夹不存在,Flask 会自动创建它
app.config["SQLALCHEMY_DATABASE_URI"