我目前使用mysqldb。mysqldb python逃脱?或%s?
在mysqldb参数中转义字符串的正确方法是什么?
请注意,E = lambda x: x.encode('utf-8')
1)所以我的连接设置为charset ='utf8'。
这是我收到的这些参数的错误:w1, w2 = u'你好', u'我好'
self.cur.execute("SELECT dist FROM distance WHERE w1=? AND w2=?", (E(w1), E(w2)))
ret = self.cur.execute("SELECT dist FROM distance WHERE w1=? AND w2=?", (E(w1), E(w2)))
文件 “建立/ bdist.linux-i686的/蛋/ MySQLdb的/ cursors.py”,线路158,在执行 类型错误:字符串中不是所有的参数转换格式
self.cur.execute("SELECT dist FROM distance WHERE w1=%s AND w2=%s", (E(w1), E(w2)))
这工作得很好,但是当W1,W2时已经\里面,然后逃逸显然没有。
我个人知道,%s不在arguemnts传递一个很好的方法,因为注入攻击等
这就是真正的原因。 – cdonts 2014-06-27 02:06:29