推荐答案
在 FastAPI 中,与数据库集成通常使用 databases 库或 SQLAlchemy 库。以下是使用 databases 库的示例:
// www.javascriptcn.com code example
from fastapi import FastAPI
from databases import Database
DATABASE_URL = "postgresql://user:password@localhost/dbname"
app = FastAPI()
database = Database(DATABASE_URL)
@app.on_event("startup")
async def startup():
await database.connect()
@app.on_event("shutdown")
async def shutdown():
await database.disconnect()
@app.get("/users/")
async def read_users():
query = "SELECT * FROM users"
return await database.fetch_all(query)本题详细解读
1. 安装依赖
首先,你需要安装 databases 库和相应的数据库驱动。例如,如果你使用的是 PostgreSQL,可以运行以下命令:
pip install databases[postgresql]
2. 配置数据库连接
在 FastAPI 应用中,你需要配置数据库连接字符串。例如,对于 PostgreSQL,连接字符串的格式为:
DATABASE_URL = "postgresql://user:password@localhost/dbname"
3. 创建 Database 实例
使用 databases.Database 类创建一个数据库实例:
database = Database(DATABASE_URL)
4. 连接和断开数据库
在应用启动时连接数据库,在应用关闭时断开连接。可以通过 FastAPI 的 startup 和 shutdown 事件来实现:
@app.on_event("startup")
async def startup():
await database.connect()
@app.on_event("shutdown")
async def shutdown():
await database.disconnect()5. 执行数据库查询
在路由处理函数中,你可以使用 database.fetch_all、database.fetch_one 等方法来执行数据库查询。例如:
@app.get("/users/")
async def read_users():
query = "SELECT * FROM users"
return await database.fetch_all(query)6. 使用 SQLAlchemy
如果你更喜欢使用 ORM,可以选择 SQLAlchemy。FastAPI 提供了与 SQLAlchemy 的良好集成支持。你可以使用 SQLAlchemy 的模型和会话管理来操作数据库。
7. 异步支持
databases 库和 SQLAlchemy 都支持异步操作,这使得它们非常适合与 FastAPI 的异步特性结合使用。
通过以上步骤,你可以在 FastAPI 中轻松地与数据库进行集成,并执行各种数据库操作。