最近工作在使用python語言開發項目,工作中遇到了一個python連接mysql的like查詢。
由於%在python中三個特殊的符號,如%s,%d分別代表了字符串佔位符和數字佔位符。
大家知道,mysql的模糊查詢也需要用到%。
我們有一張test表,要對name字段進行模糊查詢,預期的sql如下:
select * from test where name like '%abc%';
那麼python中怎麼寫呢?
sql = "select * from test where name like '%%%%%s%%%%'"
sql = sql %("abc") <span style="white-space:pre"> </span>#此處進行第一次轉義
print sql <span style="white-space:pre"> </span>#A
cur = yield self.pool.execute(sql, ()) #B <span style="font-family: Arial, Helvetica, sans-serif;">#此處會進行第二次轉義</span>
A處打印的sql:
select * from test where name like '%%abc%%';
B處執行的sql會進行第二次轉義,實際執行的sql就爲我們所預期的:select * from test where name like '%abc%';