【发布时间】:2026-02-17 05:50:01
【问题描述】:
我想在没有 ORM 的情况下使用 FastAPI(使用 asyncpg)并将返回值从选择查询映射到 pydantic 模型。这样,返回的值将通过 pydantic 进行验证,并且返回的响应的结构类似于 pydantic 模型/模式。
我曾尝试寻找这方面的文档,但很难找到/不清楚。如有任何帮助,我将不胜感激!
【问题讨论】:
标签: python-3.x fastapi pydantic asyncpg
我想在没有 ORM 的情况下使用 FastAPI(使用 asyncpg)并将返回值从选择查询映射到 pydantic 模型。这样,返回的值将通过 pydantic 进行验证,并且返回的响应的结构类似于 pydantic 模型/模式。
我曾尝试寻找这方面的文档,但很难找到/不清楚。如有任何帮助,我将不胜感激!
【问题讨论】:
标签: python-3.x fastapi pydantic asyncpg
每个 pydantic 模型inherits a couple of utility helpers to create objects。一个是parse_obj,它接受一个字典并从中创建模型对象。
parse_obj:这与模型的__init__方法非常相似,除了它需要一个字典而不是关键字参数。如果传递的对象不是字典,则会引发 ValidationError。
来自上面链接部分的示例:
class User(BaseModel):
id: int
name = 'John Doe'
signup_ts: datetime = None
m = User.parse_obj({'id': 123, 'name': 'James'})
print(m)
#> id=123 signup_ts=None name='James'
你也许可以直接给parse_obj 一个记录,因为它实现了类似字典的访问器,所以试试看它是否有效。如果没有,您可以使用dict(<row record from asyncpg>) 将记录转换为实际的字典。
【讨论】: