2011-05-16 5 views
2

파이썬에서 정수 목록 (~ 10,000)이 큰 경우 어떻게 ID가 목록에있는 테이블의 모든 항목을 효율적으로 SELECT?psycopg2를 사용한 매개 변수화 된 쿼리 : Python 목록의 SELECT

이 나는 ​​시도했다 : 두 번째와 세 번째 ID (97600168, 97611194)가 테이블에 존재

>>> lst2 
[{'id': 97600167}, {'id': 97600168}, {'id': 97611194}] 
>>> cur.executemany("SELECT id, parent_id FROM my_table WHERE id=%(id)s", lst2) 
>>> cur.fetchall() 
[(97611194, 10020688), (None, None), (None, None)] 

.

답변

5

귀하의 예제를 사용하여, where id in을 사용하고 선택하고자하는 ID 값의 튜플 인 매개 변수를 전달합니다

>>> lst2 
[{'id': 97600167}, {'id': 97600168}, {'id': 97611194}] 
>>> ids = tuple(x['id'] for x in lst2) 
>>> cur.execute("SELECT id, parent_id FROM my_table where id in %s",[ids]) 
+0

일을 A [튜플()] –

+0

감사를 전달하는,하지만 그것은 제공 나'psycopg2.ProgrammingError : 예외를 적용 할 수 없다 '. –

+0

어떤 버전을 사용하고 있습니까? 게시하기 전에'psycopg2 .__ version__ == 2.0.14'에서이 매개 변수화를 테스트했습니다. 내 예제에서 볼 수 있듯이,'int' 튜플을 (단일 항목 순서로) 전달하지 않았습니까? – MattH

관련 문제