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

255
Vistas
Mapeador SQL Alchemy para unir varias tablas

Tengo tres tablas:

 Farmer = Table( "farmer", metadata, Column("farmer_id", UUID(), primary_key=True, default=uuid.uuid4, unique=True, nullable=False) ) Fruit = Table( "fruit", metadata, Column("fruit_id", UUID(), primary_key=True, default=uuid.uuid4, unique=True, nullable=False), Column("farmer_id", UUID(), ForeignKey("farmer.farmer_id"), nullable=False) ) Vegetable = Table( "vegetable", Column("vegetable_id", UUID(), primary_key=True, default=uuid.uuid4, unique=True, nullable=False), Column("farmer_id", UUID(), ForeignKey("farmer.farmer_id"), nullable=False) )

Un Farmer puede tener 0-n Fruit y/o 0-n Vegetables .

Dado un farmer_id , quiero obtener los detalles del agricultor (hay otras columnas que quedan fuera de las anteriores por razones de brevedad) más todos los detalles de todas las frutas/verduras que podrían cultivar, el SQL sería:

 SELECT * FROM farmer LEFT OUTER JOIN fruit ON farmer.farmer_id = fruit.farmer_id LEFT OUTER JOIN vegetable ON farmer.farmer_id = vegetable.farmer_id WHERE farmer_id = ?;

Y puedo replicar eso con una consulta central de SQLAlchemy así:

 query = select( [Farmer, Fruit, Vegetable] ).select_from( Farmer.join( Fruit, Farmer.c.farmer_id == Fruit.c.farmer_id, isouter=True ).join( Vegetable, Farmer.c.farmer.id == Vegetable.c.farmer_id, isouter=True ) ).where( Farmer.c.farmer_id == ? )

Lo que no estoy seguro es cómo mapear el resultado de esta consulta en objetos. Parece que necesito usar un mapper y algunas clases, pero no estoy seguro de cómo hacerlo con múltiples combinaciones.

¿Cómo escribo un mapeador para tomar el resultado de la consulta anterior y generar un gráfico de objetos a lo largo de las líneas de:

 class FarmerObject: fruits = [...] vegetables = [...]
over 4 years ago · Santiago Trujillo
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