Mysql
 sql >> Database >  >> RDS >> Mysql

SQLAlchemy:come eliminare con join

Ecco come l'ho fatto:

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 chiave qui è creare sottoquery trovando gli ID che devono essere eliminati. Quindi utilizzi l'operatore 'in_' per selezionare i record da eliminare. 'synchoronize_session=False' eseguirà la query senza aggiornare la sessione. Questo dà il miglior aumento delle prestazioni.