Voici comment je l'ai fait :
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)
La clé ici est que vous créez une sous-requête en trouvant des identifiants qui doivent être supprimés. Ensuite, vous utilisez l'opérateur 'in_' pour sélectionner les enregistrements à supprimer. 'synchoronize_session=False' exécutera la requête sans mettre à jour la session. Cela donne la meilleure amélioration des performances.