I have a table that has millions of rows. I want to delete multiple rows via an in clause. However, using the code:
session.query(Users).filter(Users.id.in_(sub
Yep! You can call delete()
on the table object with an associated where clause.
Something like this:
stmt = Users.__table__.delete().where(Users.id.in_(subquery...))
(and then don't forget to execute the statement: engine.execute(stmt)
)
source
To complete dizzy's answer:
delete_q = Report.__table__.delete().where(Report.data == 'test')
db.session.execute(delete_q)
db.session.commit()
The below solution also works, if developers do not want to execute a plain vanilla query.
session.query(Users).filter(Users.id.in_(subquery....)).delete(synchronize_session=False)