FastAPI 面试题
目录

FastAPI 中如何处理数据库连接?

· 约 3 分钟读完 · 第 58 / 128 章

推荐答案

在 FastAPI 中处理数据库连接通常使用依赖注入的方式,结合 SQLAlchemy 或 Databases 等库来管理数据库连接。以下是一个使用 SQLAlchemy 的示例:

本题详细解读

1. 数据库连接配置

在 FastAPI 中,首先需要配置数据库连接。通常使用 SQLALCHEMY_DATABASE_URL 来指定数据库的 URL。例如,使用 SQLite 数据库时,URL 可以是 sqlite:///./test.db。

2. 创建数据库引擎

使用 create_engine 函数创建数据库引擎。这个引擎负责管理与数据库的连接。对于 SQLite,需要传递 connect_args={"check_same_thread": False} 以确保线程安全。

3. 创建会话工厂

通过 sessionmaker 创建一个会话工厂 SessionLocal。这个工厂用于生成数据库会话(Session),每个会话代表一个数据库连接。

4. 声明基类

使用 declarative_base 创建一个基类 Base,所有数据库模型都将继承自这个基类。

5. 创建 FastAPI 应用

使用 FastAPI() 创建一个 FastAPI 应用实例。

6. 依赖函数

定义一个依赖函数 get_db,用于获取数据库会话。这个函数使用 yield 来确保会话在使用后被正确关闭。

7. 示例路由

在路由中使用 Depends(get_db) 来注入数据库会话。这样,每个请求都会自动获取一个新的数据库会话,并在请求处理完成后关闭它。

通过这种方式,FastAPI 可以高效地管理数据库连接,确保每个请求都能获得独立的数据库会话,同时避免资源泄漏。