看板 Python 關於我們 聯絡資訊
在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
cobrasgo:試試escape 10/01 12:27
carrlyea:試試將 "%%s%" 改為 "%%%s%%" 10/01 14:58
hsinlongg:我是用var = "%" + var + "%" 帶入進去~! 12/02 14:53
hsinlongg:=> (SELECT * FROM table WHERE name LIKE "%s")% var 12/02 14:55