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

1.1K
Vistas
Problema con Python, FastAPI, Pydantic y SQLAlchemy

Estoy tratando de construir un sistema de blog de Python FastAPI usando SQLAlchemy con SQLite y tengo problemas para usar/comprender el parámetro response_model del decorador de API. Aquí hay un modelo de SQLAlchemy:

 class User(SqlAlchemyBase): __tablename__ = 'user' __table_args__ = {"keep_existing": True} user_uid: int = sa.Column(GUID, primary_key=True, default=GUID_DEFAULT_SQLITE) first_name: str = sa.Column(sa.String) last_name: str = sa.Column(sa.String) email: str = sa.Column(sa.String, index=True, unique=True) posts: List["Post"] = relationship("Post", backref="user") created: datetime = sa.Column(sa.DateTime, default=datetime.now(tz=timezone.utc), index=True) updated: datetime = sa.Column(sa.DateTime, default=datetime.now( tz=timezone.utc), onupdate=datetime.now(tz=timezone.utc), index=True)

Aquí está el esquema de Pydantic para un usuario:

 from datetime import datetime from pydantic import BaseModel class UserBase(BaseModel): first_name: str last_name: str email: str class UserInDB(UserBase): user_uid: int created: datetime updated: datetime class Config: orm_mode = True class User(UserInDB): pass

Aquí hay un punto final de ULR para obtener un solo usuario que tiene el parámetro response_model incluido:

 from typing import List import fastapi from starlette import status from backend.schema.user import User from backend.services import user_service router = fastapi.APIRouter() @router.get("/api/users/{user_uid}", response_model=User, status_code=status.HTTP_200_OK) async def get_one_user(user_uid: str = None) -> User: return await user_service.get_user(user_uid)

Si ejecuto la llamada anterior en los documentos de OpenAPI creados por FastAPI, obtengo un error de servidor interno en los documentos de OpenAPI y estos errores en la consola que ejecuta la aplicación FastAPI:

 File "/Users/dougfarrell/projects/blog/.venv/lib/python3.10/site-packages/fastapi/routing.py", line 137, in serialize_response raise ValidationError(errors, field.type_) pydantic.error_wrappers.ValidationError: 6 validation errors for User response -> first_name field required (type=value_error.missing) response -> last_name field required (type=value_error.missing) response -> email field required (type=value_error.missing) response -> user_uid field required (type=value_error.missing) response -> created field required (type=value_error.missing) response -> updated field required (type=value_error.missing)

Si saco el parámetro response_model del decorador @router.get(...) obtengo los resultados de la consulta SQLAlchemy, pero no la serialización de Pydantic. No sé qué intenta decirme el seguimiento de la pila de errores. ¿Alguien puede ofrecer algunas sugerencias, consejos o recursos que puedan ayudarme a descubrir qué estoy haciendo mal?

Estoy usando Python versión 3.10.1, FastAPI versión 0.70.1 y SQLAlchemy versión 1.4.29.

¡Gracias!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Prueba esto:

 from typing import List

y cambie response_model=User a:

 response_model=List[User]
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