JSON 和 MySQL UPDATE 查询
Posted
技术标签:
【中文标题】JSON 和 MySQL UPDATE 查询【英文标题】:JSON and MySQL UPDATE query 【发布时间】:2016-11-23 09:24:18 【问题描述】:我正在尝试通过 Python 从 ZeroMQ 中的 JSON msg 获取信息到 mysql。这是我正在尝试运行的代码:
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 语法有错误
此时我真的可以用第二双眼睛,我觉得我完全错过了它。
输出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()
【问题讨论】:
当您添加 2 个字符串值时,sql
会打印出什么?
更新了原始帖子以包含您的 awnser 的问题。
【参考方案1】:
你应该用单引号包裹你的参数:
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()))
【讨论】:
以上是关于JSON 和 MySQL UPDATE 查询的主要内容,如果未能解决你的问题,请参考以下文章
mysql 5.7 json 类型 json 数组类型 普通字符串类型 10w数据 查询速度差异
MYSQL:当满足子查询的所有条件时,在 UPDATE 查询中设置值