· 约 3 分钟

27-FastAPI进阶-ORM操作数据-更新数据

  • FastAPI
  • Python

学习目标

核心概念

代码示例

from pydantic import BaseModel, Field


class UserUpdate(BaseModel):
    name: str | None = Field(default=None, min_length=2, max_length=20)
    age: int | None = Field(default=None, ge=1, le=120)
    email: str | None = None
    department: str | None = None
    is_active: bool | None = None


@app.patch("/users/{user_id}")
def update_user(user_id: int, payload: UserUpdate, db: DbSession):
    user = db.get(User, user_id)
    if user is None:
        raise HTTPException(status_code=404, detail="用户不存在")

    update_data = payload.model_dump(exclude_unset=True)
    for key, value in update_data.items():
        setattr(user, key, value)

    db.commit()
    db.refresh(user)
    return UserOut.model_validate(user)

案例理解

易错点

我的补充