Så här gjorde jag:
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)
Nyckeln här är att du skapar en underfråga genom att hitta ID som måste raderas. Sedan använder du operatorn 'in_' för att välja poster som ska raderas. 'synchoronize_session=False' kommer att köra frågan utan att uppdatera sessionen. Detta ger den bästa prestandaökningen.