FastAPI 更新数据

  • 示例

# coding: utf8

from fastapi import FastAPI
from pydantic import BaseModel
from typing import Optional, List
from fastapi.encoders import jsonable_encoder


class User(BaseModel):
    username: str
    desc: Optional[str] = None
    tags: List[str] = []



app = FastAPI()

# 比如 desc 数据库已经有数据了,更新的时候没有传入此数据
@app.put('/user', response_model=User)
async def update_user(user:  User):
    ''' old_data'''
    
    # 原数据放入 Pydantic 模型
    old_user = {"username": "a", "desc": "desclala", "tags": [1,2]}
    old_user = User(**old_user)


    # 生成不含输入模型默认值的 dict 
    new_data = user.dict(exclude_unset=True) # 为空数据去除

    # 为已存储的模型创建副本,用接收的数据更新其属性 (使用 update 参数)
    new_user = old_user.copy(update=new_data)

    # 把模型副本转换为可存入数据库的形式(比如,使用 jsonable_encoder)。
    data = jsonable_encoder(new_user)

    return data




# # 启动: uvicorn main:app --reload

Last updated