You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在FastAPI中查询并返回Pydantic模型(SQLAlchemy场景)

将SQLAlchemy元组查询结果转换为Pydantic对象

1. 定义对应Pydantic模型

先创建仅包含所需字段的Pydantic响应模型:

from pydantic import BaseModel

class SomethingResponse(BaseModel):
    age: int
    status: bool

    class Config:
        orm_mode = True  # 兼容ORM对象解析,也支持元组/字典转换

2. 转换查询结果

下面是两种实用的转换方式:

方式一:直接遍历元组实例化Pydantic对象

执行查询后,逐个将元组字段映射到Pydantic模型属性:

# 执行查询并获取所有结果
query_results = db.query(Something.age, Something.status)\
    .filter(Something.user_id.in_([1, 2, 3]))\
    .order_by(desc(Something.an_id))\
    .all()

# 转换为Pydantic对象列表
pydantic_objects = [SomethingResponse(age=item[0], status=item[1]) for item in query_results]

方式二:用命名字段简化转换

通过给查询字段添加别名,让结果返回命名元组,再通过字典解析快速实例化:

# 添加字段别名,返回命名元组
query_results = db.query(
    Something.age.label("age"),
    Something.status.label("status")
)\
.filter(Something.user_id.in_([1, 2, 3]))\
.order_by(desc(Something.an_id))\
.all()

# 命名元组可直接转为字典,传递给Pydantic模型
pydantic_objects = [SomethingResponse(**dict(item)) for item in query_results]

内容的提问来源于stack exchange,提问作者Jose Kaithakkary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:05:01