返回

使用 FastAPI 连接 MySQL 数据库的实用指南

后端

使用 FastAPI 和 MySQL 构建 RESTful API 的指南

简介

当今以 API 为驱动的世界中,开发人员需要构建高效且可靠的 RESTful API。借助 FastAPI 和 MySQL,您可以轻松实现这一目标。本文将深入探讨如何使用 FastAPI 和 MySQL 创建一个 REST API,以及如何使用 Docker 容器化该 API。

使用 FastAPI 和 MySQL 构建 REST API

安装和配置

首先,安装 FastAPI 和 MySQL 驱动程序:

pip install fastapi
pip install mysql-connector-python

在您的 FastAPI 项目中,配置 MySQL 引擎和数据库会话:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine("mysql+mysqlconnector://<username>:<password>@<host>:<port>/<database>")
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

创建用户表

在 MySQL 中,创建一个名为 users 的表:

CREATE TABLE users (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL UNIQUE,
  PRIMARY KEY (id)
);

编写 FastAPI API

在 FastAPI 中,编写 API 来与数据库交互:

from fastapi import Depends, HTTPException, status
from fastapi.responses import JSONResponse
from sqlalchemy.orm import Session

@app.post("/users")
async def create_user(user: User, db: Session = Depends(get_db)):
    # ...

@app.get("/users")
async def get_users(db: Session = Depends(get_db)):
    # ...

运行 API

使用以下命令运行 FastAPI API:

uvicorn main:app --host 0.0.0.0 --port 8000

使用 Docker 容器化 FastAPI API

创建 Dockerfile

在 Dockerfile 中,定义 Docker 镜像:

FROM python:3.8

WORKDIR /code

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

构建和运行 Docker 镜像

docker build -t my_api .
docker run -p 8000:8000 my_api

更多示例

  • 使用 SQLAlchemy ORM 实现更复杂的查询和更新
  • 使用 FastAPI 的路由器和依赖注入功能
  • 使用 Docker Compose 管理多个 Docker 容器

结论

使用 FastAPI 和 MySQL,您可以构建高效且功能强大的 RESTful API。此外,通过使用 Docker 容器化,您可以轻松部署和管理您的 API。本文提供了一个全面的指南,让您开始使用 FastAPI 和 MySQL。

常见问题解答

1. 如何使用 SQLAlchemy ORM 进行查询?

users = db.query(User).filter(User.name == "John").all()

2. 如何在 FastAPI 中使用依赖项注入?

from fastapi import Depends

async def get_current_user(db: Session = Depends(get_db)):
    # ...

3. 如何使用 Docker Compose 管理多个容器?

创建一个 docker-compose.yml 文件:

version: '3'

services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: "mysql:5.7"

4. 如何部署 FastAPI API 到生产环境?

考虑使用容器编排工具,如 Kubernetes 或 Docker Swarm。

5. FastAPI 和 RESTful API 的优势是什么?

  • 快速开发: FastAPI 简化了 API 开发过程。
  • 性能: FastAPI 基于 ASGI,提供高性能。
  • 可扩展性: FastAPI 支持通过插件和中间件进行扩展。
  • 文档: FastAPI 自动生成详细的 API 文档。
  • 符合 REST: FastAPI 符合 REST 规范,简化了 API 设计。