2012-01-12 5 views
0

У меня возникли проблемы с поиском документации, чтобы иметь возможность добавлять переменные, отличные от SQL, в инструкцию SQL. Официальные документы не учитываются в http://dev.mysql.com/doc/refman/5.0/en/user-variables.html.Добавить переменные SQL через MySQLdb

Как сделать следующее в python и действительном SQL?

id, provider_id, title = row[0], row[2], row[4] 
cursor.execute("INSERT INTO vendor_id VALUES (%s,%s,%s);"%(id, provider_id, title)) 

ответ

2

Вы на правильном пути, но это должно выглядеть так.

id, provider_id, title = row[0], row[2], row[4] 
cursor.execute("INSERT INTO vendor_id VALUES (%s, %s, %s)", id, provider_id, title) 

API-интерфейс базы данных SQL python автоматически отключает и запрашивает преобразование экранирования и цитирования переменных. Операторы форматирования строк не нужны и в этом случае не форматируют цитирование переменных. Вы можете форматировать окончательный массив переменных любым способом, как вам нравится, просто не используйте оператор%, как вы используете. Если я правильно, то причина этого заключается в том, что переменные связаны, и не отформатирован в текст, так что инъекция не может произойти

cursor.execute("INSERT INTO vendor_id VALUES (%s, %s, %s)", (id, provider_id, title)) 
cursor.execute("INSERT INTO vendor_id VALUES (?, ?, ?)", (id, provider_id, title)) 

должен работать тоже.

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

  • Нет связанных вопросов^_^