Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

692
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!