2017-10-01 1 views

답변

2

Psycopg2이 %s 자리하지 ? questionm를 사용하여 오류 또는 근처"구문 또는 근처에서 오류

cur = con.cursor() 
cur.execute('SELECT * FROM test WHERE voucher= ? OR voucher= ?', ('RHAT', 'MSO')) 

또는

오류 메시지가

psycopg2.ProgrammingError입니다 " 방주는 :

cur.execute(
    'SELECT * FROM test WHERE voucher = %s OR voucher = %s', 
    ('RHAT', 'MSO')) 

는 Psycopg2 문서의 Passing parameters to SQL queries section 참조하십시오.

일반적으로 Python 데이터베이스 어댑터는 이름이 지정된 매개 변수 스타일과 함께 하나 또는 다른 스타일로 지정됩니다. 사용 된 스타일을 확인하려면 항상 설명서를 확인하십시오. 라이브러리에는 paramstyle variable이 있지만, 항상 여러 스타일에 대한 지원을 잘 반영하지는 않습니다.

+0

내가 테이블 이름을 쿼리에 전달하려고 시도 할 때 cur.execute ('DROP TABLE % s;', ('test'))가 작동하지 않는 것 같습니다. – Sameesh

+0

@Sameesh : 테이블 이름은 데이터가 아닙니다. 아니. 자리 표시자는 SQL 지침이나 객체 이름으로 착각하지 않도록 * data *를 이스케이프 처리합니다. –

+0

tablename을 포함하는 메소드에 대해서는 [psycopg2를 사용하여 PostgreSQL의 매개 변수로 열 이름을 전달] (// stackoverflow.com/a/27290006)을 참조하십시오. –

관련 문제