2014-02-09 3 views
0

Я новичок Python, и я пытаюсь запросить базу данных MySQL. Синтаксис MySQL проверен на PHP, и он работал, но параметры Python новы для меня, и они дают мне ошибку. Не могли бы вы помочь мне?Как вставить строки в Python MySQL Query?

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. У меня просто есть внутренняя ошибка сервера в браузере. Извините ... – Hugo

+0

Где вы открываете соединение? – alfasin

ответ

0

Вы обнаружили, что используете модуль MySQLdb. Если да, то вы можете (и должны) использовать execute «S встроенный в качестве второго параметра, и передавать входные данные в виде кортежа, как так:

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)) 

ли это вместо того, чтобы использовать % для форматирования строки в режиме реального времени. Предоставление данных MySQLdb позволяет ему указывать и удалять ваши строки. Прямо сейчас строки в запросе не цитируются и не экранируются.

+0

Спасибо. Теперь я получаю сообщение - TypeError: объект 'tuple' не может быть вызван – Hugo

+0

@Hugo Замеченные запятые? Удалили ли вы лишние пробелы и отступы, которые были в моем первоначальном ответе? (Это было только отформатировано так, чтобы лучше показать код. Я добавил обратную косую черту.) –

+0

Я использую одну строку в Sublime Text, чтобы избежать ошибок. – Hugo

Смежные вопросы