Dit is hoe ik het deed:
map_ids = session.query(Table1.map_id). \
filter(Table1.xxxx == 'xxx_value')
q = session.query(Table2). \
filter(Table2.map_id.in_(map_ids.subquery()))
q.delete(synchronize_session=False)
De sleutel hier is dat u subquery's maakt door id's te vinden die moeten worden verwijderd. Vervolgens gebruikt u de operator 'in_' om records te selecteren die moeten worden verwijderd. 'synchoronize_session=False' zal de query uitvoeren zonder de sessie bij te werken. Dit geeft de beste prestatieverbetering.