Ето как го направих:
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)
Ключът тук е да създадете подзаявка, като намерите идентификатори, които трябва да бъдат изтрити. След това използвате оператор 'in_', за да изберете записи, които да бъдат изтрити. 'synchoronize_session=False' ще изпълни заявка без актуализиране на сесията. Това дава най-доброто повишаване на производителността.