Python - MySQL语法错误

时间:2015-12-01 16:56:23

标签: python mysql

我尝试使用python命令更新密钥副本上的mysql

sql.run("INSERT INTO snapshots (id,username,data) VALUES ('%s','%s','%s') ON DUPLICATE KEY UPDATE data = VALUES(%s)" % (id,user.name,json.dumps(data),json.dumps(data)))

它适用于数据插入,但在密钥副本上,它会抛出此错误

  

/usr/local/lib/python2.7/dist-packages/memsql/common/database.py at 166> (1064,'您的SQL语法中有错误;请查看与您的MySQL服务器版本对应的手册,以便在{' {"成就":{&}附近使用正确的语法#34; 150":1448983913.491705," 200":1448984742.809708," 204":144 \'在第1行')

我尝试了KEY UPDATE data = '%s'KEY UPDATE data = VALUES(%s)KEY UPDATE data = VALUES('%s'),但都没有。

我到底做错了什么?

1 个答案:

答案 0 :(得分:1)

错误的根本原因是json-dumped字符串,其中没有转义"个字符,这是由直接将数据替换为查询引起的。 正如@mgilson所说,使用cursor.execute()方法和数据库驱动程序将负责转义。