get请求fastAPI sqlalchemy的验证错误



我有这个路由,即与DB表中的实际数据应该回答9和4,如果我输入2作为参数,但我得到错误。

@userRoutes.get(
"/users/userMatch/{idusuariobuscar}",
response_model=list[PartidosUser],
tags=["users"],
)
def get_user_matches(idusuariobuscar: str):
return conn.execute(
partidosusuarios.select(partidosusuarios.c.idpartido).where(
partidosusuarios.c.idusuario == idusuariobuscar
)
).fetchall()

查询这个表

这是schema

class PartidosUser(BaseModel):
id: Optional[str]
idUsuario: str
idPartido: str
class Config:
orm_mode = True

这是表的模型

partidosusuarios = Table(
"partidosusuarios",
meta,
Column("idrelacion", Integer, primary_key=True),
Column("idpartido", Integer),
Column(
"idusuario",
Integer,
),
)

和错误

raise ValidationError(errors, field.type_)
pydantic.error_wrappers.ValidationError: 4 validation errors for PartidosUser
response -> 0 -> idUsuario
field required (type=value_error.missing)
response -> 0 -> idPartido
field required (type=value_error.missing)
response -> 1 -> idUsuario
field required (type=value_error.missing)
response -> 1 -> idPartido
field required (type=value_error.missing)

您只从数据库中获取idpartido列,因此其他字段不存在。从

更改查询
partidosusuarios.select(partidosusuarios.c.idpartido).where(
partidosusuarios.c.idusuario == idusuariobuscar
)

partidosusuarios.select().where(
partidosusuarios.c.idusuario == idusuariobuscar
)

应该能解决你的问题。

还要注意,由于Pydantic模型包含id字段,而数据库模型不包含,因此该字段将始终是None。此外,数据库字段idrelacion不包括在响应中。这些可能是有意的选择,或者是命名错误。

相关内容

  • 没有找到相关文章

最新更新