0
我想創建一個簡單的腳本來改變一些mysql數據,但我對參數化查詢有點困惑。代碼如下所示:Python - MySQLdb參數化查詢
reader_id = sys.argv[1]
cmd_id = sys.argv[2]
conn = mysql.connect(user='...', passwd='...', host='...', db='...')
curs = conn.cursor()
mysql_data = {
"reader_id": int(reader_id),
"cmd_id": int(cmd_id)
}
curs.execute("UPDATE `reader_config_hw` SET `changed_` = '1' "
"WHERE `object_id` = %(reader_id)d AND `id` = %(cmd_id)d;", mysql_data)
curs.execute("UPDATE `reader` SET `check_for_command` = '1' WHERE `id` = %(reader_id)d", mysql_data)
和錯誤的結果是
Traceback (most recent call last):
File "./main.py", line 25, in <module>
"WHERE `object_id` = %(reader_id)d AND `id` = %(cmd_id)d;", mysql_data)
File "/usr/lib64/python3.6/site-packages/MySQLdb/cursors.py", line 210, in execute
query = query % args
TypeError: %d format: a number is required, not str
它說,這個數字是必需的,但我已經通過int(reader_id)
改變了變量的類型,是不是?
這工作,我已經嘗試過這種解決方案。問題是,當使用'%(變量)s'時,我使用的IDE(pyChram)在分析SQL查詢時抱怨。另外我想解釋爲什麼會發生這種情況。 – sukovanej
啊,gotcha。不幸的是,我不熟悉pyCharm。希望你很快得到解決方案!對不起,我不能有更多的幫助:( – nat5142