2013-09-16 2 views
1

Я использую MYSQL (версия 5.5.31-0 + wheezy1.) И питона (версия 2.7.3.) Со следующим утверждением:Как передать переменные MYSQL с помощью Python

q ="""INSERT INTO scale_equipment truck_id, product_id, driver_id, field_id, pit_id, harvest_equipment_id, weight, status VALUES (%s, %s, %s, %s, %s, %s, %s, %s)""",(truck_id, product_id, driver_id, field_id, pit_id, harvest_equipment_id, 0, status) 

Если я использую :

q ="""INSERT INTO scale_equipment truck_id, product_id, driver_id, field_id, pit_id, harvest_equipment_id, weight, status VALUES ('002', 'CS', 'BG', 'HD1', 'T1', 'C1', 0, 'U')""" 

это прекрасно работает, что я делаю неправильно, чтобы передать переменные в операторе SQL

Я распечатать добротность, прежде чем он попадает в выполнить оператор запроса с помощью переменных, и это то, что он выглядит так:

'INSERT INTO scale_equipment truck_id, product_id, driver_id, field_id, pit_id, harvest_equipment_id, weight, status VALUES (%s, %s, %s, %s, %s, %s, %s, %s)', ('002', 'CS', 'BG', 'HD1', 'T1', 'C1', 0, 'U') 

Любая помощь была бы принята с благодарностью. Параметры

+0

Возможный дубликат: http://stackoverflow.com/questions/16506643/inserting-variables-mysql-using-python-not-working – Destructor

ответ

1

Запрос должен должен быть принят во втором аргументе execute():

params = ('002', 'CS', 'BG', 'HD1', 'T1', 'C1', 0, 'U') 
cursor.execute("""INSERT INTO 
         scale_equipment 
         (truck_id, product_id, driver_id, field_id, pit_id, harvest_equipment_id, weight, status) 
        VALUES 
         (%s, %s, %s, %s, %s, %s, %s, %s)""", params) 

В этом случае вы бы не беспокоиться о SQL инъекций, водитель MySQLdb делает ускользающей для вас.

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