반응형
Python / psycopg2 WHERE IN 문
SQL 문에서 % s를 통해 목록 (countryList)을 사용할 수있는 올바른 방법은 무엇입니까?
# using psycopg2
countryList=['UK','France']
sql='SELECT * from countries WHERE country IN (%s)'
data=[countryList]
cur.execute(sql,data)
지금은 "WHERE country in (ARRAY [...])"를 실행하려고하면 오류가 발생합니다. 문자열 조작 이외의 방법이 있습니까?
감사
를 들어 IN
운영자, 당신은 원하는 튜플 대신 목록 SQL 문자열에서, 그리고 제거 괄호.
# using psycopg2
data=('UK','France')
sql='SELECT * from countries WHERE country IN %s'
cur.execute(sql,(data,))
디버깅하는 동안 다음을 사용하여 SQL이 올바르게 빌드되었는지 확인할 수 있습니다.
cur.mogrify(sql, (data,))
대답을 조금 설명하고 명명 된 매개 변수를 처리하고 목록을 튜플으로 변환하려면 다음을 수행하십시오.
countryList = ['UK', 'France']
sql = 'SELECT * from countries WHERE country IN %(countryList)s'
cur.execute(sql, { # You can pass a dict for named parameters rather than a tuple. Makes debugging hella easier.
'countryList': tuple(countryList), # Converts the list to a tuple.
})
아래와 같이 파이썬 목록을 직접 사용할 수 있습니다. SQL에서 IN 연산자처럼 작동하며 오류없이 빈 목록을 처리합니다.
data=['UK','France']
sql='SELECT * from countries WHERE country = ANY (%s)'
cur.execute(sql,(data,))
출처 : http://initd.org/psycopg/docs/usage.html#lists-adaptation
참조 URL : https://stackoverflow.com/questions/28117576/python-psycopg2-where-in-statement
반응형
'Program Tip' 카테고리의 다른 글
MySQL 오류 1264 : 열의 범위 값을 벗어남 (0) | 2020.12.15 |
---|---|
C에서 "적어도"int 크기를 어떻게 요청합니까? (0) | 2020.12.15 |
AWS Lambda에서 Socket.io를 사용할 수 있습니까? (0) | 2020.12.15 |
Webpack을 사용하여 프로젝트에서 여러 파일 항목 및 출력을 설정하는 방법은 무엇입니까? (0) | 2020.12.14 |
mp3 파일을 병합하는 가장 좋은 방법은 무엇입니까? (0) | 2020.12.14 |