Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

696
Visualizações
FastAPI: la solicitud GET da como resultado un error de tipo (el valor no es un dictado válido)

este es mi esquema de base de datos.

ingrese la descripción de la imagen aquí

Definí mi esquema así:

de pydantic import BaseModel

 class Userattribute(BaseModel): name: str value: str user_id: str id: str

Este es mi modelo:

 class Userattribute(Base): __tablename__ = "user_attribute" name = Column(String) value = Column(String) user_id = Column(String) id = Column(String, primary_key=True, index=True)

En un crud.py defino un método get_attributes .

 def get_attributes(db: Session, skip: int = 0, limit: int = 100): return db.query(models.Userattribute).offset(skip).limit(limit).all()

Este es mi punto final GET :

 @app.get("/attributes/", response_model=List[schemas.Userattribute]) def read_attributes(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)): users = crud.get_attributes(db, skip=skip, limit=limit) print(users) return users

La conexión a la base de datos parece funcionar, pero el problema es el tipo de datos:

 pydantic.error_wrappers.ValidationError: 7 validation errors for Userattribute response -> 0 value is not a valid dict (type=type_error.dict) response -> 1 value is not a valid dict (type=type_error.dict) response -> 2 value is not a valid dict (type=type_error.dict) response -> 3 value is not a valid dict (type=type_error.dict) response -> 4 value is not a valid dict (type=type_error.dict) response -> 5 value is not a valid dict (type=type_error.dict) response -> 6 value is not a valid dict (type=type_error.dict)

¿Por qué FASTApi espera un diccionario aquí? Realmente no lo entiendo, ya que ni siquiera puedo imprimir la respuesta. ¿Cómo puedo arreglar esto?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

SQLAlchemy no devuelve un diccionario, que es lo que pydantic espera por defecto. Puede configurar su modelo para que también admita la carga desde parámetros orm estándar (es decir, atributos en el objeto en lugar de búsquedas en el diccionario):

 class Userattribute(BaseModel): name: str value: str user_id: str id: str class Config: orm_mode = True

También puede adjuntar un depurador justo antes de la llamada para return a ver qué se devuelve.

Dado que esta respuesta se ha vuelto un poco popular, también me gustaría mencionar que puede hacer que orm_mode = True el valor predeterminado para sus clases de esquema al tener una clase principal común que hereda de BaseModel :

 class OurBaseModel(BaseModel): class Config: orm_mode = True class Userattribute(OurBaseModel): name: str value: str user_id: str id: str

Esto es útil si desea admitir orm_mode para la mayoría de sus clases (y para aquellas en las que no lo hace, heredar del BaseModel normal).

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda