我目前正在使用python中的一个项目,我本来希望在我的字符串中使用撇号进行SQL查询。例如:"Jimmy's home."
我有这个错误:
1064 You have an error in your SQL syntax
所以,我试图在撇号之前添加\
,但是当我查看我的数据库时,\'
之前的字符串就在我的字段中。
查询中的字符串:"Jimmy\'s home"
数据库中的字符串:"Jimmy"
我不明白为什么?
答案 0 :(得分:0)
如前所述和其他地方已多次发布,您必须不使用字符串插值来构建SQL字符串。使用参数intead:
REQ = u"INSERT INTO organismes (NAME_organisme`,ID_organisme,adresse,cp,town,lat,lon,tel,fax,email,website) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);"
cursor.execute(REQ, (NAME,ID,LIGNE,CP,TOWN,LAT,LON,TEL,FAX,MAIL,URL))
注意,查询字符串中占位符周围的 no 引号:db adapter根据需要将它们放入。
另外,请不要使用大写字母来表示非常数的东西。
答案 1 :(得分:0)
你需要使用“Jimmy's”来获得你的结果“Jimmy's”而不是SQL中的“Jimmy's”。
答案 2 :(得分:0)
因为' or "
是一个特殊的键,当你把它放在你的查询中时,sql会自动找到另一个' or "
的位置,这就是为什么我们称之为escape keycode
\
的原因是{ {1}}使用此方法是显示原始值