2016-09-29 77 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

你是對的!真棒。非常感謝你! –

相關問題