今天使用mysqldb執行query語句的時候,在執行這條語句的時候:
select PROJ, DATE_FORMAT(MAX(DATE),'%Y-%m-%') AS MAXDATE, DATE_FORMAT(MIN(DATE),'%Y-%m-%d') AS MINDATE FROM (SELECT resource.PROJ,`day`.DATE FROM resource,`day` where resource.MAC=`day`.MAC ORDER BY PROJ) AS PROJSET GROUP BY proj
出現一下錯誤:
Python TypeError: not enough arguments for format string
根據錯誤提示順藤摸瓜找到病症:
在python擴展包mysqldb下的cursors.py有這么一處代碼寫法已經過時。
原來的的寫法如圖:
我們只需要把
query = query % args 修改為 query = query.format(args)
總結:這個mysqldb是我在ubuntu16.04版本的linux通過apt-get install安裝的,但是也出現mysqldb里一些過時的寫法。
舊版本的寫法基本能滿足一些基本的sql的語句執行,但是像上面的sql語句里使用了max,min等mysql系統函數的同時,又
使用了data_format函數,這樣query % args 就不能使用了。
另附別人的忠告:Note that the %
syntax for formatting strings is becoming outdated. If your version of Python supports it