2016-09-29 9 views
12

何百万行ものテーブルがあります。私はin句で複数の行を削除したい。ただし、コードを使用:SQLAlchemy:クエリを行わずに複数の行を削除する方法

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

上記のコードは、結果を照会し、削除を実行します。私はそれをしたくありません。私はスピードが欲しい。

は、私が(はい、私はsession.executeについて知っている)を実行することができるようにしたい:

Delete from users where id in()ので質問:私はORMを使用して、2つの世界の最高を取得できますか?ハードコーディングを行わずに削除を実行できますか?

答えて

16

関連するwhere句を使用してテーブルオブジェクトに対してdelete()を呼び出すことができます。このような

何か:

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

(その後、文を実行することを忘れないでください:engine.execute(stmt)

source

+0

あなたは右のでした!驚くばかり。どうもありがとうございました! –

関連する問題