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