2016-07-20 3 views
1

Я пытаюсь получить информацию из JSON-msg из ZeroMQ в MySQL с помощью Python. Это кусок кода, который я пытаюсь запустить:Запрос JSON и MySQL UPDATE

for i in json_msg["PropertyInfoMsg"]: 
    db2 = MySQLdb.connect(host="localhost", user="user", passwd="pass", db="db") 
    cursor2 = db2.cursor() 
    sql = """UPDATE settings SET value=%s WHERE name=%s""" % (i["PropertyType"].lower(), i["PropertyValue"].lower()) 
    cursor2.execute(sql) 
    db2.commit() 
    cursor2.close() 

Но это пришедшего назад как:

1064, «У Вас есть ошибка в вашем SQL синтаксиса

I может действительно использовать вторую пару глаз на этом в этот момент времени, я чувствую, что я полностью его не понимаю.

Priting из SQL-переменная возвращается:

UPDATE settings SET value=i["PropertyType"].lower() WHERE name=i["PropertyValue"].lower() 
UPDATE settings SET value=i["PropertyType"].lower() WHERE name=i["PropertyValue"].lower() 
UPDATE settings SET value=i["PropertyType"].lower() WHERE name=i["PropertyValue"].lower() 
UPDATE settings SET value=i["PropertyType"].lower() WHERE name=i["PropertyValue"].lower() 
UPDATE settings SET value=i["PropertyType"].lower() WHERE name=i["PropertyValue"].lower() 
UPDATE settings SET value=i["PropertyType"].lower() WHERE name=i["PropertyValue"].lower() 
UPDATE settings SET value=i["PropertyType"].lower() WHERE name=i["PropertyValue"].lower() 
UPDATE settings SET value=i["PropertyType"].lower() WHERE name=i["PropertyValue"].lower() 
UPDATE settings SET value=i["PropertyType"].lower() WHERE name=i["PropertyValue"].lower() 
UPDATE settings SET value=i["PropertyType"].lower() WHERE name=i["PropertyValue"].lower() 
UPDATE settings SET value=i["PropertyType"].lower() WHERE name=i["PropertyValue"].lower() 
UPDATE settings SET value=i["PropertyType"].lower() WHERE name=i["PropertyValue"].lower() 
+0

Что выводит 'sql' при добавлении в 2 строковых значения? – Carlos

+0

Обновлен исходный пост, чтобы включить вопрос вашего азера. – user5740843

ответ

2

Вы должны обернуть параметры с одной цитатой:

sql = """UPDATE settings SET value='%s' WHERE name='%s'""" % (i["PropertyType"].lower(), i["PropertyValue"].lower()) 

Также вы должны подтвердить правильность ваших данных json.

2

Я хотел бы сделать запрос следующим образом:

cursor2.execute("UPDATE settings SET value = %s WHERE name = %s",(i["PropertyType"].lower(), i["PropertyValue"].lower())) 
Смежные вопросы