简体   繁体   English

Python-MySQL语法错误

[英]Python - MySQL syntax error

I tried to make a python command to update mysql on key duplicate 我试图使一个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)))

It works on data insert but on key duplicate, it throws this error 它适用于数据插入,但适用于密钥重复,会引发此错误

/usr/local/lib/python2.7/dist-packages/memsql/common/database.py at 166 > (1064, 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \\'{"achievements": {"150": 1448983913.491705, "200": 1448984742.809708, "204": 144\\' at line 1') /usr/local/lib/python2.7/dist-packages/memsql/common/database.py,位于166>(1064,“您的SQL语法有误;请查看与您的MySQL服务器版本相对应的手册, \\'{“ achievements”:{“ 150”:1448983913.491705,“ 200”:1448984742.809708,“ 204”:144 \\'在第1'行附近使用正确的语法

I have tried KEY UPDATE data = '%s' , KEY UPDATE data = VALUES(%s) and KEY UPDATE data = VALUES('%s') but none of them works. 我尝试了KEY UPDATE data = '%s'KEY UPDATE data = VALUES(%s)KEY UPDATE data = VALUES('%s')但它们都不起作用。

What exactly did I do wrong here? 我到底在这做错了什么?

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM