如何去掉Python SQL中的引号

2013-08-12 11:34:41 +08:00
 Ayase
大概是这样的
common = form["common"]
query = "UPDATE tb SET %s = %s WHERE id = %s"
cursor.execute(query, [common, field, updtae_id])

变量common代替字段名title。
然后common替代第一个 %s 时,SQL报错:
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 ''title' = 'title3' WHERE id = '3'' at line 1"

就是 common 被自动加上引号了……如何才可以不让它有引号呢?
Python新手,谢谢指教……
4319 次点击
所在节点    Python
3 条回复
nybux
2013-08-12 11:46:27 +08:00
你这种不是变量绑定,是动态sql了,你还是自己先在字符串层面把column都补好
janxin
2013-08-12 14:49:23 +08:00
楼主用的什么SQL库呢?如果是Mysql-python的话,可以用:
```
MySQLdb.escape_string()
```

还有楼主你这么写是有SQL注入漏洞的....
lqs
2013-08-12 16:44:47 +08:00
@janxin 楼主这样是参数化查询,会自动判断类型并转义,不会有SQL注入漏洞。反而手动去escape_string容易漏写。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/78812

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX