在 fastapi 中由 pydantic 序列化

Serialization by pydantic in fastapi

我会单独问这个问题,因为它是这个问题的延续,但内容不同。
我想序列化一个连接,然后用 pydantic 序列化它,但它不起作用。
如果可能的话,我想 return 它就像一个单独的对象一样。

{
 id: 1,
 parent_column: test1,
 child_column: test2
}

您可以使用所需信息创建一个 Pydantic 模型,因此该模型将负责序列化为 JSON 格式。

from pydantic import BaseModel

class MyResponse(BaseModel):
    id: int
    parent: str
    child: str

您只需通过以请求的格式向模型提供数据来创建响应。


data_json = MyResponse(id= my_data.id, parent=my_data.parent, child=my_data.child)

下面给出了一个带有 fastAPI 端点的示例,该端点将采用 ID 来检索特定数据,并 return 具有特定模板的 JSON 响应。

from pydantic import BaseModel
from fastapi import status

class MyResponse(BaseModel):
    id: int
    parent: str
    child: str


@ router.get('/data',
             status_code=status.HTTP_200_OK,
             response_model=MyResponse)
def get_data(parent_id:int):
    try:
        data = get_data(parent_id)
    except Exception:
        raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,detail="Server Error")

    return MyResponse(id=data.id, parent=data.parent, child=data.child)

之后,可以通过 Pydantic class 的 orm_mode 使用 sqlalchemy link Pydantic 模型。更多信息在这里:https://fastapi.tiangolo.com/tutorial/sql-databases/#use-pydantics-orm_mode