快速上手:使用FastAPI连接MongoDB

流程图

创建FastAPI应用 安装MongoDB驱动 连接MongoDB数据库 定义数据模型 编写API路由 测试API功能

旅程图

journey
    title 使用FastAPI连接MongoDB
    section 创建FastAPI应用
        A(安装FastAPI) --> B(创建Hello World应用)
        B --> C(安装uvicorn)
    section 安装MongoDB驱动
        C --> D(安装pymongo)
    section 连接MongoDB数据库
        D --> E(连接数据库)
    section 定义数据模型
        E --> F(定义Pydantic模型)
    section 编写API路由
        F --> G(编写CRUD路由)
    section 测试API功能
        G --> H(测试接口功能)

步骤及代码示例

步骤1:创建FastAPI应用

首先安装FastAPI和uvicorn来创建一个简单的FastAPI应用。

# 在命令行中安装FastAPI
pip install fastapi

# 创建Hello World应用
```python
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
# 安装uvicorn
pip install uvicorn
  • 1.
  • 2.
步骤2:安装MongoDB驱动

使用pymongo作为连接MongoDB的驱动。

# 在命令行中安装pymongo
pip install pymongo
  • 1.
  • 2.
步骤3:连接MongoDB数据库

连接MongoDB数据库,并定义数据库名称和集合名称。

from pymongo import MongoClient

# 连接MongoDB数据库
client = MongoClient('mongodb://localhost:27017/')

# 定义数据库和集合
db = client['mydatabase']
collection = db['mycollection']
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
步骤4:定义数据模型

使用Pydantic定义数据模型,以便在API中使用。

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    description: str
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
步骤5:编写API路由

编写CRUD路由,实现对MongoDB数据库的增删改查操作。

from fastapi import APIRouter

router = APIRouter()

@router.post("/items/")
def create_item(item: Item):
    # 插入数据到MongoDB
    result = collection.insert_one({"name": item.name, "description": item.description})
    return {"message": "Item created successfully"}

@router.get("/items/")
def read_items():
    # 查询所有数据
    items = collection.find()
    return {"items": items}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
步骤6:测试API功能

运行FastAPI应用,并使用Postman等工具测试API功能。

# 在命令行中启动FastAPI应用
uvicorn main:app --reload
  • 1.
  • 2.

结论

通过以上步骤,你已经学会了如何使用FastAPI连接MongoDB数据库。希望这篇文章对你有所帮助,继续加油!