当前位置: 首页 > 知识库问答 >
问题:

如何使用asyncpg和FastAPI将select查询的返回值映射到pydantic模型以进行输出和验证?

庾君博
2023-03-14

我想在没有ORM的情况下使用FastAPI(使用asyncpg),并将select查询返回的值映射到pydantic模型。通过这种方式,使用pydantic验证返回的值,并且返回的响应的结构类似pydanti模型/模式。

我尝试寻找有关此的文档,但很难找到/不清楚。我将不胜感激任何帮助!

共有1个答案

齐坚成
2023-03-14

每个pydantic模型都继承了几个实用程序助手来创建对象。一个是< code>parse_obj,它获取一个dict并从中创建模型对象。

parse_obj:这与模型的__init__方法非常相似,只是它采用dict而不是关键字参数。如果传递的对象不是dict,将引发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'

您也许可以直接给< code>parse_obj一个记录,因为它实现了类似dict的访问器,所以只需尝试一下,看看它是否有效。如果没有,您可以使用< code>dict(

 类似资料:
  • 我有一个 FastAPI 项目,其中一个endpoint如下所示: 如您所见,我的响应是任意属性dict,其格式为的属性是采购订单ID。我如何编写来表示我的响应?因此,我希望大摇大摆地展示我的回应。

  • 我得到了以下数据结构 我正在寻找一个查询dsl谓词,它给我的所有出版物,其中任何Author.name包含某个字符串,例如“汉斯” 我试过了: 但是,如果有多个作者在名称中包含“Hans”,则这是抱怨。有没有像出版一样就像一个集合?

  • 我有一个BaseEntity抽象类,它是我所有实体的超类。这是一个Mpse dSuperClass。现在我想最好在基本实体上定义一个命名查询,以便它向我返回特定子类实体的计数。因此,例如,如果A类子类BaseEntity,我可以运行A类的命名查询并返回A的计数,即数据库中存在的A类的行数。JPA 1.0和hibernate是否可以作为实现者?(我想避免在我的每个实体上放置一个命名查询,而不是基本实

  • 在mapper中,我调用了一个proc'xyz',它返回所查询的ProcessType表的行列表的光标。

  • 问题内容: 我编写了一个函数,该函数输出格式正确的PostgreSQL查询。现在,我不再想要输出文本,而是实际上对数据库运行生成的语句并返回结果- 就像查询本身一样。 到目前为止,我有: 保留表的列名列表。这些在函数过程中声明并填充。最终,它们具有以下值: : 除了()外,所有列均为类型。 : 可以是四个表之一的名称。除了common列之外,每个列都有不同的列。 基础表的定义 。 该变量将保留此处