2016-09-29 3 views
12

수백만 개의 행이있는 테이블이 있습니다. in 절을 통해 여러 행을 삭제하려고합니다. 그러나 코드를 사용하여 :SQLAlchemy : 쿼리하지 않고 여러 행을 삭제하는 방법

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

위 코드는 결과를 쿼리 한 다음 삭제를 실행합니다. 나는 그것을하고 싶지 않다. 나는 속도를 원해.

나는 (그래 나는 session.execute에 대해 알고) 실행할 수 있도록하려면 :

Delete from users where id in() 그래서 질문 : 나는 ORM을 사용하여, 두 세계의 최고를 얻을 수 있습니까? 쿼리를 하드 코딩하지 않고 삭제를 수행 할 수 있습니까?

답변

16

예! 테이블 개체에 delete()을 호출하면 연결된 where 절이 생깁니다. 이 같은

뭔가 :

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

(다음 문을 실행하는 것을 잊지 마세요 : engine.execute(stmt))

source

+0

당신은 오른쪽에 있었다를! 굉장해. 고마워요! –

관련 문제