Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

693
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda