python mysqldb无法插入带引号的长字符串

python mysqldb无法插入带引号的长字符串,python,mysql,Python,Mysql,我正在努力做到这一点 cursor.execute("""INSERT INTO my_stats VALUES (%s,%s)""" % (time.strftime('%Y-%m-%d'), info["countries"])) 其中info[“countries']是一个json字符串,如下所示 {“美国”:8997,“背景”:78….} 我一直从MySQL获取语法错误异常 我正在使用Python MysqlDB您在查询字符串的开头有一个额外的双引号。 此外,您应该将参数作为第二个参数

我正在努力做到这一点

cursor.execute("""INSERT INTO my_stats VALUES (%s,%s)""" % (time.strftime('%Y-%m-%d'), info["countries"]))
其中info[“countries']是一个json字符串,如下所示 {“美国”:8997,“背景”:78….}

我一直从MySQL获取语法错误异常


我正在使用Python MysqlDB

您在查询字符串的开头有一个额外的双引号。
此外,您应该将参数作为第二个参数传递给
execute
,以避免SQL注入攻击;并确保正确引用值,例如:

cursor.execute("""INSERT INTO my_stats 
                  VALUES (%s, %s);""", (time.strftime('%Y-%m-%d'), 
                                        info["countries"],))

如果您发布您收到的错误,我们将能够提供更多帮助。

为什么在这里使用多行字符串语法?您只有一行。无论如何,您在开始时有一个额外的
。但是,您也可以正确地执行此操作,并使用一个预先准备好的语句,这并不难,您只需将
%
替换为逗号即可

cursor.execute("INSERT INTO my_stats VALUES (%s,%s)", (time.strftime('%Y-%m-%d'), info["countries"], ))

请发布您收到的错误。抱歉,额外的“只是我帖子中的一个输入错误。我不知道有prepared like语句,它一开始确实让我觉得很奇怪。我不习惯使用这个接口。我现在就尝试一下您的方法。谢谢。@Vangel:所以可能是JSON字符串中的
让MySQL变得恶心。无论如何,只要使用一个准备好的语句,它就会为您处理引用问题。现在,在另一个查询中,我插入带有%d的整数时,Iget出现问题,它会抱怨类型错误:%d格式:需要一个数字,而不是str。我甚至试过int(变量)也没用。@Vangel:准备好的语句不是格式字符串。你总是使用
%s
。哦,该死的><那是个笨蛋。我给亚当答案只是因为他先回答但是感谢你唤醒了我。现在必须停止编码。SQL注入不是我的问题,我没有做任何需要加载userland变量的事情。你和cha0site都建议这样做,所以我现在正在尝试。明白了。尽管如此,这种方式应该用于将报价职责移交给MySQLdb库。我遇到了新问题,请参阅下面我对cha0site的回复。