в sqlalchemy отличная документация с кучей примеров
конкретно по составлению запросов -
тут
конкретно этот запрос можно записать почти как в sql
условие для join'а D и P можно не прописывать так как есть соответсвующий relationship
D = TblAlertDescription
P = t_TBL_ALERT_PROJECTCORR
PRC = t_TBL_CONF_PROJECTRSSFEEDCORR
query = session. \
query(D.ALERT_ID). \
select_from(D). \
join(P). \
join(PRC, P.c.PROJECT_ID == PRC.c.PROJECT_ID). \
filter(D.STATUS_ID == 1,
D.alert_type_id == 5,
PRC.c.RSS_LOCATION_ID == 1)
print query
->
SELECT "TBL_ALERT_DESCRIPTION"."ALERT_ID" AS "TBL_ALERT_DESCRIPTION_ALERT_ID"
FROM "TBL_ALERT_DESCRIPTION" JOIN "TBL_ALERT_PROJECTCORR" ON "TBL_ALERT_DESCRIPTION"."ALERT_ID" = "TBL_ALERT_PROJECTCORR"."ALERT_ID" JOIN "TBL_CONF_PROJECTRSSFEEDCORR" ON "TBL_ALERT_PROJECTCORR"."PROJECT_ID" = "TBL_CONF_PROJECTRSSFEEDCORR"."PROJECT_ID"
WHERE "TBL_ALERT_DESCRIPTION"."STATUS_ID" = ? AND "TBL_ALERT_DESCRIPTION".alert_type_id = ? AND "TBL_CONF_PROJECTRSSFEEDCORR"."RSS_LOCATION_ID" = ?