我尝试使用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')
,但都没有。
我到底做错了什么?
答案 0 :(得分:1)
错误的根本原因是json-dumped字符串,其中没有转义"
个字符,这是由直接将数据替换为查询引起的。
正如@mgilson所说,使用cursor.execute()
方法和数据库驱动程序将负责转义。