1

I'm trying to get info from a JSON msg out of ZeroMQ into MySQL by Python. This is the piece of code I'm attempting to run:

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

But it's comming back as:

1064, 'You have an error in your SQL syntax

I could really use a second pair of eyes at this at this point in time, I feel like I'm completely missing it.

Priting out the sql variable returns:

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()
2
  • What does sql print out to when you add in the 2 string values? Commented Jul 20, 2016 at 8:35
  • Updated the original post to include your awnser's question. Commented Jul 20, 2016 at 8:38

2 Answers 2

2

You should wrap your parameters with single quote:

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

Also you must confirm your json data is correct.

Sign up to request clarification or add additional context in comments.

Comments

2

I would do the query this way :

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.