데이터베이스에서 가져올 행 ID 목록이 있습니다. 나는 파이썬과 psycopg2를 사용하고 있는데, 내 문제는 그 ID를 SQL에 효과적으로 전달하는 방법이다. 나는 그리스트의 길이를 안다면 필요할 때마다 수동으로 또는 자동으로 많은 "% s"표현식을 쿼리 문자열에 추가 할 수 있기 때문에 꽤 쉽다는 것을 알았지 만, 여기에 내가 얼마나 필요한지 모르겠다. . sql "id IN (id1, id2, ...)"문을 사용하여 해당 행을 선택해야합니다. 목록의 길이를 확인하고 "% s"의 적절한 숫자를 쿼리 문자열로 연결하는 것이 가능하다는 것을 알고 있지만 매우 느리고 추한 것 같습니다. 누구든지 그것을 해결하는 방법에 대한 아이디어가 있습니까? 그리고 "IN"선언문을 사용해야하는 이유를 묻지 마십시오. 이것은 클래스 할당의 일부인 벤치 마크입니다. 미리 감사드립니다!psycopg2에서 SQL에 매개 변수 목록 전달
답변
파이썬 튜플은 psycopg2에서 SQL 목록에 변환됩니다
cur.mogrify("SELECT * FROM table WHERE column IN %s;", ((1,2,3),))
것 출력 파이썬 새로운 올 사람을 위해
'SELECT * FROM table WHERE column IN (1,2,3);'
: 그것은 여기 튜플이 아닌 목록을 사용하는 불행하게도 중요하다. 두 번째 예 :
cur.mogrify("SELECT * FROM table WHERE column IN %s;",
tuple([row[0] for for in rows]))
고맙습니다. 나는 그 사실을 눈치 채지 못했습니다. 솔루션의 유일한 문제는 그 튜플에서 쉼표를 잊어 버린 것입니다. –
고마워 - 고치다 – philofinfinitejest
Python LISTS가 Postgres ARRAY 유형으로 변환되므로 커서 질의 (...) 인수에 (tuple (SOME_LIST))와 같은 일을 자주해야한다는 것을 알게되었습니다. 단일 요소 리터럴 튜플에 목록의 튜플()을 래핑하는 방법에 유의하십시오. 따라서이 예 에서처럼 튜플의 튜플을 갖습니다. –
- 1. SQLDataSource에 매개 변수 전달
- 2. SQL에 매개 변수 값 전달 asp.net에 선택적 문자열 proc 저장
- 3. 웹 파트에 매개 변수 전달
- 4. 함수 SQL에 간격 매개 변수를 전달
- 5. 동적 매개 변수 전달
- 6. a4j에 매개 변수 전달 :
- 7. F # 매개 변수 전달
- 8. DependencyResolver : 매개 변수 전달
- 9. 콜백의 매개 변수 전달
- 10. NHibernate에 매개 변수 전달
- 11. 매개 변수 전달
- 12. 매개 변수 전달
- 13. CreateThread에 매개 변수 전달
- 14. 전달 된 매개 변수
- 15. xml의 매개 변수 전달
- 16. 매개 변수 전달 호출
- 17. 보기에 매개 변수 전달
- 18. CollectionViews에 매개 변수 전달
- 19. 배열 매개 변수 전달
- 20. 전달 매개 변수 리피터에서
- 21. 매개 변수 전달
- 22. 스택에 매개 변수 전달
- 23. 전달 매개 변수
- 24. jQuery에서 매개 변수 전달
- 25. JSF 매개 변수 전달
- 26. 명령 매개 변수 전달
- 27. .jcall의 매개 변수 전달
- 28. GSP에서 매개 변수 전달
- 29. 전달 매개 변수
- 30. 전달 형식 매개 변수
SQL 응답에 반대합니까? 동적 SQL을 사용하면 어떤 길이의 문자열을주고 SQL에서 올바르게 읽을 수 있습니다. – Twelfth