FastAPI 与 MySQL 数据库的集成
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API。它基于 Python 3.6+ 类型提示,并且使用基于 ASGI 的服务器。FastAPI 可以轻松地与 MySQL 数据库集成,实现数据的存储和检索。本文将介绍如何使用 FastAPI 连接 MySQL 数据库,并进行基本的数据操作。
环境准备
首先,确保你已经安装了 Python 环境和 MySQL 数据库。然后,安装 FastAPI 和相关依赖:
pip install fastapi uvicorn sqlalchemy mysqlclient
连接 MySQL 数据库
使用 SQLAlchemy 作为 ORM(对象关系映射)工具,可以简化数据库操作。以下是连接 MySQL 数据库的示例代码:
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
DATABASE_URL = "mysql://user:password@host/db"
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
定义数据模型
定义一个简单的数据模型,例如 User
:
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
name = Column(String(50), index=True)
age = Column(Integer)
email = Column(String(120), unique=True)
创建数据库和表
在 FastAPI 应用中,可以使用以下代码创建数据库和表:
from fastapi import FastAPI
app = FastAPI()
@app.on_event("startup")
async def startup_event():
Base.metadata.create_all(bind=engine)
@app.on_event("shutdown")
async def shutdown_event():
await SessionLocal().close()
数据操作
以下是使用 FastAPI 和 SQLAlchemy 进行数据操作的示例:
from fastapi import Depends, HTTPException, status
from sqlalchemy.orm import Session
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.post("/users/")
def create_user(user: User, db: Session = Depends(get_db)):
db.add(user)
db.commit()
db.refresh(user)
return user
@app.get("/users/{user_id}")
def read_user(user_id: int, db: Session = Depends(get_db)):
user = db.query(User).filter(User.id == user_id).first()
if user is None:
raise HTTPException(status_code=404, detail="User not found")
return user
甘特图
以下是使用 Mermaid 语法创建的甘特图,展示了 FastAPI 与 MySQL 数据库集成的主要步骤:
gantt
title FastAPI 与 MySQL 数据库集成步骤
dateFormat YYYY-MM-DD
section 环境准备
Install Python :done, des1, 2023-01-01, 2023-01-02
Install MySQL :done, after des1, 2023-01-03, 2023-01-04
Install Dependencies :done, after des2, 2023-01-05, 2023-01-06
section 连接数据库
Create Engine :active, 2023-01-07, 3d
Create Session :after Create Engine, 2023-01-10, 2d
section 定义数据模型
Create User Model :2023-01-11, 2d
section 数据操作
Create CRUD Operations :2023-01-13, 5d
旅行图
以下是使用 Mermaid 语法创建的旅行图,展示了用户在 FastAPI 应用中创建和读取用户信息的流程:
journey
title 用户操作流程
section 访问应用
step1: 用户访问 FastAPI 应用
step2: 应用展示用户界面
section 创建用户
step3: 用户填写用户信息
step4: 用户提交表单
step5: 应用创建用户并返回成功消息
section 读取用户
step6: 用户输入用户 ID
step7: 用户提交查询请求
step8: 应用返回用户信息或错误消息
结语
通过本文的介绍,你应该已经了解了如何使用 FastAPI 连接 MySQL 数据库,并进行基本的数据操作。FastAPI 的高性能和易用性使其成为构建 API 的理想选择。同时,SQLAlchemy 作为 ORM 工具,可以简化数据库操作