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 工具,可以简化数据库操作