2016-09-29 72 views
12

我有一张拥有数百万行的表。我想通过in子句删除多行。然而,使用代码:SQLAlchemy:如何在不查询的情况下删除多行

session.query(Users).filter(Users.id.in_(subquery....)).delete() 

上面的代码将查询的结果,然后再执行删除。我不想这样做。我想要速度。

我希望能够执行(是的,我知道的session.execute):Delete from users where id in()

于是问:我怎样才能得到最好的两个世界,使用ORM?我可以在没有硬编码查询的情况下进行删除吗?

回答

16

是的!您可以使用关联的条款在表格对象上调用delete()

事情是这样的:

stmt = Users.__table__.delete().where(Users.id.in_(subquery...))

(然后不要忘记执行语句:engine.execute(stmt)

source

+0

你是对的!真棒。非常感谢你! –

相关问题