2014-02-09 4 views
0

저는 파이썬 초보자이며 MySQL 데이터베이스를 쿼리하려고합니다. MySQL 구문은 PHP에서 테스트되었고 작동했지만 Python 매개 변수는 새로운 것이므로 오류가 발생합니다. 당신이 나를 도울 수?Python MySQL 쿼리에 문자열을 삽입하는 방법은 무엇입니까?

pom = "Alcobaça" 
data_inicial = "2012-12-01" 
data_final = "2012-12-05" 

cur.execute("SELECT DATE(DTM), POM, ROUND(MIN(TMP),1) 
FROM dados_meteo WHERE POM =%s 
AND DATE(DTM) >=%s AND DATE(DTM) <=%s" 
%(pom,data_inicial,data_final)) 
+1

질문에 오류를 게시하십시오. :) –

+0

저는 Flask를 사용하여 mycomputer에서 로컬로 실행합니다. 방금 브라우저에 500 개의 내부 서버 오류가 있습니다. 죄송합니다 ... – Hugo

+0

어디에서 연결을합니까? – alfasin

답변

0

MySQLdb 모듈을 사용하고있는 것으로 보입니다. 그렇다면, 당신은 (그리고해야)과 같이 튜플로 입력을 내장 두 번째 매개 변수 execute 년대를 사용하여 전달할 수 있습니다

c.execute(\ 
    "SELECT DATE(DTM), POM, ROUND(MIN(TMP),1) FROM \ 
     dados_meteo WHERE POM = %s AND DATE(DTM) >= %s AND DATE(DTM) <= %s", \ 
    (pom, data_inicial, data_final)) 

이 대신 인라인 (in-line) 문자열의 형식을 %를 사용하지 마십시오. MySQLdb에 데이터를 제공하면 문자열을 인용하고 이스케이프 할 수 있습니다. 지금 쿼리의 문자열은 인용되거나 이스케이프 처리되지 않습니다.

+0

감사합니다. 이제 메시지가 나옵니다. TypeError : 'tuple'객체를 호출 할 수 없습니다. – Hugo

+0

@Hugo 쉼표가 누락 되었습니까? 원래의 답변에 있던 여분의 공백과 들여 쓰기를 제거 했습니까? (백 슬래시를 추가했습니다.) –

+0

오류를 피하기 위해 Sublime Text에서 한 줄을 사용하고 있습니다. – Hugo

관련 문제