2016-07-20 6 views
1

Ich versuche, Informationen von einer JSON-Nachricht aus ZeroMQ in MySQL von Python zu bekommen. Dies ist das Stück Code, ich bin versucht zu laufen:JSON und MySQL UPDATE Abfrage

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

Aber es ist comming zurück:

1064: ‚Sie haben einen Fehler in der SQL-Syntax

I Könnte wirklich ein zweites Paar Augen zu diesem Zeitpunkt verwenden, ich fühle mich wie ich es komplett vermisse.

priting aus der SQL-Variable Rückgabe:

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

Was drückt 'sql' aus, wenn Sie die 2 Zeichenfolgenwerte hinzufügen? – Carlos

+0

Aktualisierte den ursprünglichen Beitrag, um die Frage des Benutzers zu enthalten. – user5740843

Antwort

2

Sie Ihre Parameter mit Apostroph wickeln sollte:

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

Auch Sie müssen bestätigen, dass Ihre JSON-Daten korrekt sind.

2

Ich würde die Abfrage tun auf diese Weise:

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