Python中SQL——LIKE中的%

轉載自:http://blog.csdn.net/chenxiao_ji/article/details/51332791

需求:

做項目的過程中,使用了MySQL數據庫,後臺使用Python來做邏輯層。項目中需要實現一個功能,通過輸入搜索框中的字符去MySQL中找到匹配的文章的標題。

SQL語句:

SELECT * FROM T_ARTICLE WHERE title LIKE '%searchStr%'

報錯:

但是在Python中%是一個格式化字符,所以如果需要使用%則需要寫成%%。從網上查了一些帖子,大多數人的回答是:

cur.execute("SELECT* from  T_ARTICLE WHERE title LIKE '%%%s%%'" %  searchStr)

或者

cur.execute("SELECT* from  T_ARTICLE WHERE title LIKE %s" %  ('%%%s%%' % searchStr))

這樣print出SQL語句之後爲:

SELECT * FROM T_ARTICLE WHERE title LIKE '%生活%'

並且會報錯  TypeError: not enough arguments for format string

這個錯誤很明顯是提示格式化的時候出現了問題

解決:

最終將在Python中執行的sql語句改爲:

sql = "SELECT * FROM T_ARTICLE WHERE title LIKE '%%%%%s%%%%'" % searchStr

執行成功,print出SQL語句之後爲:

SELECT * FROM T_ARTICLE WHERE title LIKE '%%生活%%'

原因:

Python在執行sql語句的時候,同樣也會有%格式化的問題,仍然需要使用%%來代替%。因此要保證在執行sql語句的時候格式化正確。而不只是在sql語句(字符串)的時候正確。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章