【已解決】Python使用sql語句模糊查詢報錯:python中TypeError: not enough arguments for format string


2021-03-26-19:54:13

今天下午對世界疫情詳情數據庫進行模糊查詢。

首先要明確一點:使用模糊查詢就會用到WHERE語句中的LIKE語句,主要說一下在使用 % 的時候要注意的點:

在Python中%是一個格式化字符,所以如果需要使用%則需要寫成%%。
將在Python中執行的sql語句改為:
sql = "SELECT * FROM table_test WHERE value LIKE '%%%%%s%%%%'" % test_value

執行成功,print出SQL語句之后為:
SELECT * FROM table_test WHERE value LIKE '%%public%%'

Python在執行sql語句的時候,同樣也會有%格式化的問題,

仍然需要使用%%來代替%。因此要保證在執行sql語句的時候格式化正確。

而不只是在sql語句(字符串)的時候正確。

1 sql = " SELECT * FROM world WHERE continent LIKE '%%%%%s%%%%'" %continent

在Python解析第一次之后sql語句會變成這樣:

SELECT * FROM world WHERE continent LIKE '%%美洲%%'

這時候字符串兩邊的百分號是兩個,原來是四個,但是在執行sql語句的時候,Python還會再解析一次%,所以原始字符串需要四個百分號

來表示一個百分號。


在sql語句里是支持對變量的插入的,比如:

1 sql_temp = " SELECT * FROM world WHERE c_name LIKE '"+c_name+"'"
1 ql = " SELECT * FROM world WHERE continent LIKE '%%%%%s%%%%'" %continent

總結幾個sql常用語句:

我們查詢的時候經常需要用到排序以及數據包含和不包含的篩選條件:

1  sql = 'SELECT province,city,confirm,heal,dead FROM details ' \ 2          'where update_time=(select update_time from details order by update_time desc limit 1) '\ 3           ' and city not in ("境外輸入","地區待確認") '

按日期降序:

1 sql = " SELECT * FROM world WHERE c_name LIKE '%%%%%s%%%%' order by dt desc "%c_name

 

 

原文鏈接:https://blog.csdn.net/xinqing0909/article/details/80775234


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM