2017-05-21 2 views
0

매개 변수가있는 쿼리를 사용하여 테이블에서 항목을 선택하려고합니다. 그들은 결과를 반환하지 않습니다. 다음과 같이 코드는 다음과 같습니다Python : sqlite3 매개 변수화 된 쿼리 결과가 없습니다.

var = str.capitalize(var) 
selected = db.execute('select a, b, c from table1 where a=(?)', [var]) 
var에 항상 세 개의 소문자 문자열입니다

(예 : 'xxx는')는 'A'열이 데이터베이스에 입력 한 텍스트이며, 세 개의 대문자 문자열을 포함 (예 : '트리플 엑스').

나는 무서운 또한 시도 :

selected = db.execute('select a, b, c from table1 where a="%s"' % str.capitalize(var)]) 

나는 그것이 실행 방법 생략 따옴표에 문제 믿었지만 중 하나가 작동하지 않았기 때문에. 나에게 어떤 결과를 가지고있는 유일한 방법이었다 : 나는 윈도우 10에서 파이썬 3.6.0를 사용하고

selected = db.execute('select a, b, c from table1 where a="XXX"') 

, 사람 here는 문제가 될 수있는 제안, 그러나 그들의 해결책은 하나 나를 위해 작동하지 않았다.

+0

당신이 테이블 –

+0

38 GBP 2017년 2월 24일 5.1011 39 GBP의 몇 행을 공유 할 수 있습니다 2017-02-27 5.0646 40 GBP 2017-02-25 5.0617 – DCzo

+0

어느 열이 a, b, c입니까? 'var'에는 무엇이 들어 있습니까? –

답변

0

capitalize첫 번째 문자 만 대문자로 변환합니다. 사용, 모자에 모든 것을 변환하려면 upper() 매개 변수는 튜플/사전으로

사용

selected = db.execute('select a, b, c from table1 where a=?', (var.upper(),)) 

또는

를 전달해야

selected = db.execute('select a, b, c from table1 where a=:var', {"var":var.upper()}) 

읽기 당신은해야 here

+0

고마워요,하지만 둘 다 작동하지 않습니다 – DCzo

0

더를 사용하십시오. (10) 투자 모두로 변환이 시도 :

var = var.upper() 
selected = db.execute('select a, b, c from table1 where a=?', (var,)) 

이것 또한 작동합니다

var = var.upper() 
selected = db.execute('select a, b, c from table1 where a="%s"'%var] 
+0

그건 정확히 문제가 ... 고마워요! – DCzo

+0

쿨, 도움이되어 기쁩니다 :) –