解決Not all parameters were used in the SQL statement問題
阿新 • • 發佈:2018-11-14
使用Python3連線MySQL資料庫,執行INSERT語句時,遇到Not all parameters were used in the SQL statement
錯誤,通常是由於沒有正確使用MySQL的佔位符導致的。
vals = ('C', '製造業', 35, '專用裝置製造業', 600031, '三一重工') cur.execute('''INSERT INTO industry_csrc (category_code, category_name, industry_code, industry_name, company_code, company_name) VALUES (%s, %s, %d, %s, %d, %s) ''', vals)
以上程式碼會執行出錯,因為無論是數字(包括整數和浮點數)、字串、日期時間或其他任意型別,都應該使用%s
佔位符。
修改上面的程式碼,可正確執行:
vals = ('C', '製造業', 35, '專用裝置製造業', 600031, '三一重工') cur.execute('''INSERT INTO industry_csrc (category_code, category_name, industry_code, industry_name, company_code, company_name) VALUES (%s, %s, %s, %s, %s, %s) ''', vals)
MySQL的引數標記與Python格式化字串中使用的%s
看起來相同,但這種關係只是巧合,其他資料庫通常使用?
來作為引數標記。
Note that the parameter markers used by mysql.connector may look the same as the %s used in Python string formatting but the relationship is only coincidental. Some database adapters like oursql and sqlite3 use ? as the parameter marker instead of %s.