Creo que estoy bastante cerca de aquí, pero tal vez necesito algunos consejos. Estoy tratando de ejecutar la consulta SQL a continuación en SQL Alchemy.
Endpoints for populating the UI with data. These need to consist of some joins. select constraintid, sja.segment, sjs.source, sjct.constrainttype, constraintvalue, targeting, frequency, period from signaljourneyaudienceconstraints JOIN signaljourneyaudiences sja ON sja.audienceid = signaljourneyaudienceconstraints.audienceid; JOIN signaljourneysources sjs ON sjs.sourceid = signaljourneyaudienceconstraints.sourceid JOIN signaljourneyconstrainttype sjct ON sjct.constrainttypeid = signaljourneyaudienceconstraints.constrainttypeidHe leído algunos documentos, creo que estoy en la línea correcta, pero sigo recibiendo errores como
sqlalchemy.exc.ArgumentError: Join target SignalJourneyAudiences.segment does not refer to a mapped entity Lo que obtengo porque SignalJourneyAudiences.segment no es una clave, estaba tratando de replicar la consulta SQL que sé que funciona.
@app.get("/get-main-query-data", status_code=status.HTTP_200_OK) def get_main_query_data(): """Returns data for the main query.""" return ( db.query( models.SignalJourneyAudienceConstraints.constraintId, models.SignalJourneyAudiences.segment, models.SingalJourneySources.source, models.SignalJourneyConstraintType.constraintType, models.SignalJourneyAudienceConstraints.constraintValue, models.SignalJourneyAudienceConstraints.targeting, models.SignalJourneyAudienceConstraints.frequency, models.SignalJourneyAudienceConstraints.period, ) .join( models.SignalJourneyAudiences.segment, models.SignalJourneyAudiences.audienceId == models.SignalJourneyAudienceConstraints.audienceId, ) .join( models.SingalJourneySources.source, models.SingalJourneySources.sourceId == models.SignalJourneyAudienceConstraints.sourceId, ) .join( models.SignalJourneyConstraintType.constraintType, models.SignalJourneyConstraintType.constraintTypeId == models.SignalJourneyAudienceConstraints.constraintTypeId, ) .all() ) ¿Tengo razón al pensar db.query() es mi cláusula de selección y luego hago cosas como uniones, filtros, etc.?
cualquier ayuda sería muy apreciada
He resuelto el problema, sabía que estaba en el camino correcto.
yo estaba usando
.join( models.SignalJourneyAudiences.segment, models.SignalJourneyAudiences.audienceId == models.SignalJourneyAudienceConstraints.audienceId, )en vez de
.join( models.SignalJourneyAudiences, models.SignalJourneyAudiences.audienceId == models.SignalJourneyAudienceConstraints.audienceId, ) @app.get("/get-main-query-data", status_code=status.HTTP_200_OK) def get_main_query_data(): """Returns data for the main query.""" return ( db.query( models.SignalJourneyAudienceConstraints.constraintId, models.SignalJourneyAudiences.segment, models.SingalJourneySources.source, models.SignalJourneyConstraintType.constraintType, models.SignalJourneyAudienceConstraints.constraintValue, models.SignalJourneyAudienceConstraints.targeting, models.SignalJourneyAudienceConstraints.frequency, models.SignalJourneyAudienceConstraints.period, ) .join( models.SignalJourneyAudiences, models.SignalJourneyAudiences.audienceId == models.SignalJourneyAudienceConstraints.audienceId, ) .join( models.SingalJourneySources, models.SingalJourneySources.sourceId == models.SignalJourneyAudienceConstraints.sourceId, ) .join( models.SignalJourneyConstraintType, models.SignalJourneyConstraintType.constraintTypeId == models.SignalJourneyAudienceConstraints.constraintTypeId, ) .all() )