2016-09-07 97 views
0

我做了下一個查詢來更新我的數據庫中的一行。python sqlite3 UPDATE從變量集

def saveData(title, LL, LR, RL, RR, distanceBack): 
    c.execute("UPDATE settings SET (?,?,?,?,?,?) WHERE name=?",(title, LL, LR, RL, RR, distanceBack, title)) 
    conn.commit() 

我總是得到一個錯誤:sqlite3.OperationalError:近「(」:。語法錯誤 我知道的東西是不符合問號正確的,我不能找到確切的解決方案是什麼都可以有人給我解釋一下是什麼問題

+0

你正在嘗試使用此功能做的是格式的字符串,也就那麼是要執行的查詢。顯然,字符串格式化工作得很好..你可以試試這個:'c.execute(「更新設置SET({},{},{},{},{},{})WHERE name = {}」。格式(標題,LL,LR,RL,RR,distanceBack,標題))。當使用字符串格式化來形成由數據庫執行的查詢時,您必須注意您允許的注入。如果這也將被其他人使用,你必須做一些閱讀。 –

+1

你確定在sqlite語法是有效的嗎?我想,也許你可以嘗試:UPDATE table_name SET column1 = value1,column2 = value2 ....,columnN = valueN WHERE [condition]; –

+0

可能你的'UPDATE'語法錯了 - http://www.w3schools.com/sql/sql_update.asp – furas

回答

1

您可以使用此SQL語法:

UPDATE table_name 
SET column1 = value1, column2 = value2...., columnN = valueN 
WHERE [condition]; 

例如,如果您有一個名爲類別表,你要編輯的類別名稱,你可以使用:

c.execute("UPDATE CATEGORY SET NAME=? WHERE ID=?", (name,category_id)) 

WHERE:

類別是隻包含兩個項目的表:(ID,NAME)與ID PRIMARY KEY。

-1

據我所知 UPDATE查詢必須看起來像UPDATE table SET (key=value, key2=value2, ...) WHERE <condition>

嘗試修改查詢類似

c.execute("UPDATE settings SET (title=?,LL=?,LR=?,RL=?,RR=?,distanceBack=?) WHERE name=?",(title, LL, LR, RL, RR, distanceBack, title))