sql >> Base de Datos >  >> RDS >> Mysql

SQLAlchemy:Cómo eliminar con unión

Así es como lo hice:

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 clave aquí es que crea una subconsulta encontrando ID que deben eliminarse. Luego, usa el operador 'in_' para seleccionar los registros que se eliminarán. 'synchoronize_session=False' ejecutará la consulta sin actualizar la sesión. Esto proporciona el mejor impulso de rendimiento.