query = "SELECT * FROM devices WHERE devices.`id` LIKE '%{}%'".format("f2333")
datas = cur.query(query)
報錯:
query = query % tuple([db.literal(item) for item in args])
TypeError: not enough arguments for format string
傳入query語句拼接出來為
SELECT * FROM devices WHERE devices.`mac` LIKE '%f8272e010882%'
此時還在python解釋器中運行,這里的%加后面的字符會被python解析為占位符,如%f為float,所以報錯缺少參數。
解決
使用轉義,轉義%要使用%轉義。
query = "SELECT * FROM devices WHERE devices.`id` LIKE '%%{}%%'".format("f2333")
datas = cur.query(query)