Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQLAlchemy :comment supprimer avec une jointure

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.