Запрос с помощью Python Connector с переменными
Я новичок в Python, и у меня есть простая проблема, которую я не могу решить. Я на платформе Windows, и, к сожалению, я не могу изменить эту причину работы. Я должен подключиться ко многим таблицам MySQL и делать что-то с извлеченными данными. Код, который у меня есть:
conn = mysql.connector.Connect(host='<ip>',user='<user>',\
password='',database='<my database>')
c = conn.cursor()
c.execute ("select field from TABLE")
results = c.fetchall()
for row in results:
c.execute("select * from otherTable where nodo = %s",(str(row[0])))
if c.rowcount == 0:
doSomething()
else:
doOtherThing()
c.close()
когда я запускаю это с Python34, я получаю ошибку:
msgstr "у вас есть ошибка в вашем sql synthax; проверьте руководство, соответствующее вашей версии сервера mysql, чтобы найти правильный синтаксакс для использования рядом с"%s "в строке 1
Спасибо
1 ответ
Вам нужно поместить одинарные кавычки вокруг ваших%s следующим образом: c.execute("select * from otherTable where nodo = '%s'",(str(row[0])))
вам также следует рассмотреть возможность помещения запроса в переменную, а затем выполнить его следующим образом:
query = ("select * from otherTable where nodo = '%s'",(str(row[0])))
c.execute(query)
Этот способ помогает предотвратить потенциальные атаки SQL инъекций и позволяет print(query)
так что вы можете отладить оператор SQL, если вы получаете ошибки.