我有这个路由,即与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
不包括在响应中。这些可能是有意的选择,或者是命名错误。