2017-01-26 2 views
1

파이썬/플라스크를 사용 중이며 내 DB를 쿼리하려고합니다.SQL 작동하지 않는 곳을 선택하십시오.

conn = sqlite3.connect('./flaskdb.db') 
cur = conn.cursor() 
cur.execute('SELECT email FROM users WHERE email=\'%s\'', "name") 

는 I 2 열 및 행 email, password/항목의 하나로서 값 name, password있다.

왜 작동하지 않습니까? 오류가 발생합니다 :

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 0, and there are 7 supplied. 
+0

오류의 원인이되는 전체 Python 문을 볼 수 있도록 전체 예제를 게시하십시오. 언제나 그렇듯이 [최소한의 완전하고 검증 가능한 예제] (http://stackoverflow.com/help/mcve)는 우리가 여러분을보다 쉽게 ​​도와줍니다. – 2ps

+0

전체 코드를 표시하십시오. 일반적으로 준비된 명령문을 사용하면 API가 사용자를 대신해서 처리하므로 매개 변수 주위에 작은 따옴표를 사용하는 것에 대해 걱정할 필요가 없습니다. –

+0

@ 2ps, 코드 업데이트 – garoo

답변

0

여기 준비된 진술을 사용하면 어려워 질 것입니다. 이 코드를보십시오 :

conn = sqlite3.connect('./flaskdb.db') 
cur = conn.cursor() 
name = '[email protected]' 
cur.execute('SELECT email FROM users WHERE email=?', (name,)) 

수정 다른 데이터베이스에 사용할 수 있습니다 무엇을하는 대신 %s의 자리로 후자를 ?를 사용하여 포함한다. 또한 name이라는 변수를 바인드하려면 해당 변수 주위에 따옴표가 없어야합니다.

cur.execute('SELECT password FROM users WHERE email=(?)', (email,)) 

당신이 자리로 튜플과 (?)로 필요합니다

+0

고마워! 그 % s는 허용되지 않습니다. 표현식을 기대하고 있습니다. – garoo

+0

% s는 유형 오류 – garoo

+0

을 제공합니다. 죄송합니다. 구문 오류가 발생했으며 sqlite3.Operationerror – garoo

0

나는 해결책을 가지고 있습니다.