在fastapi中通过pydantic序列化



sqlalchemy中的关系

我将单独问这个问题,因为它是这个问题的延续,但内容不同。
我想序列化一个连接,然后用pydantic序列化它,但是它不起作用。
如果可能的话,我想把它当作一个单独的对象来返回。

{
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来检索特定的数据,并返回一个带有特定模板的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类的orm_mode链接Pydantic模型和sqlalchemy。更多信息请访问:https://fastapi.tiangolo.com/tutorial/sql-databases/#use-pydantics-orm_mode