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_SET 值

mysql 5.7 json 类型 json 数组类型 普通字符串类型 10w数据 查询速度差异

MYSQL:当满足子查询的所有条件时,在 UPDATE 查询中设置值

mysql 的delete from 和update子查询限制

MYSQL UPDATE 查询多个值

优化包含 WHERE 和 ORDER BY 的 MySQL UPDATE 查询?