Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQLAlchemy:Como excluir com junção


Aqui está a maneira que eu fiz:
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)

A chave aqui é você criar uma subconsulta encontrando ids que precisam ser excluídos. Em seguida, você usa o operador 'in_' para selecionar os registros a serem excluídos. 'synchoronize_session=False' executará a consulta sem atualizar a sessão. Isso dá o melhor aumento de desempenho.