作者sandwichC (没回应=挂站)
看板Python
标题[问题] MySQLdb使用like叙述时变数有引号的状况…
时间Fri Oct 1 10:18:03 2010
在Python中使用MySQLdb library来access mysql database时
为了避免 sql string中的变数含有引号,通常会用下面的方式
cursor.execute ("""
SELECT * FROM table WHERE name = %s
""", %(var))
若变数var中含有引号,仍然能被正常的执行
我的疑问是:如果今天改用like子句,如:
"""SELECT * FROM table WHERE name LIKE "%%s%" """, %(var)
第一个和第三个%符号希望当作like的万用字元
但python会把它们解释成第一个例子中%的用法
我知道可以直接用string.replace去掉引号,
但总觉得应该有办法可以让字串sql-safe的
类似像 cursor.execute(ToSqlSafeStr(sql_str)) 这样子的用法
或者像第一个例子的用法
这是个相当常见的需求,Python上应该也早就有标准的解法了吧
但我在Google上找了找却都只找到部份正确的解法 :(
不知道各位有没有什麽好的建议呢?谢谢
--
My blog:
http://sandwichc-life.blogspot.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 68.232.127.230
1F:推 cobrasgo:试试escape 10/01 12:27
2F:推 carrlyea:试试将 "%%s%" 改为 "%%%s%%" 10/01 14:58
3F:→ hsinlongg:我是用var = "%" + var + "%" 带入进去~! 12/02 14:53
4F:→ hsinlongg:=> (SELECT * FROM table WHERE name LIKE "%s")% var 12/02 14:55