2011-11-11 91 views
1

試圖通過Python運行MySQL腳本,它不斷給我錯誤。這是我的MySQL:獲取MySQL錯誤

c.execute("""INSERT into DATA(checkup_date) 
VALUES(%s) WHERE machine_name = %s 
""", (date, machine)) 

我在做什麼錯?

ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE machine_name = 'TL-D04'\nVALUES('2011-11-11')' at line 2") 
+2

粘貼錯誤,請 – Alfabravo

+1

@JimGarrison:'%s'語法是MySQLdb中參數化SQL的工作原理。尤其要注意'%s'周圍缺少引號。請執行Google搜索MySQLdb文檔,然後放棄您的評論。 –

+0

檢查_mysql的源代碼使我相信C API不使用預準備語句,因此容易受到SQL注入的影響。它似乎沒有可以使用Python MySQLDB API來避免它。唉...... –

回答

3

INSERT INTO ... VALUES ... WHERE ...不是有效的SQL。您無法將WHERE子句添加到INSERT語句中。

我猜你想要更新checkup_date列當前在DATA表中的行,而不是插入一個新行。如果是這種情況,請嘗試使用

UPDATE DATA SET checkup_date = %s WHERE machine_name = %s 

改爲。

+0

這看起來應該起作用,但現在它告訴我inventory.data不存在。我有一個名爲inventory的數據庫,其中有一個名爲data的表 - 它應該可以工作! –

+0

ProgrammingError:(1146,「表'inventory.DATA'不存在」) –

+0

沒關係,這是因爲DATA被封頂。 –