2016-10-04 88 views
0

我:sqlite3用「?」更新數據庫 - 蟒蛇

數據庫testing.db3 表:MYTABLE 列: '名稱', '狀態'

我做的:

con = sqlite3.connect('testing.db3') 
cur = con.cursor() 
cur.execute('select * from mytable where status is null') 

data = cur.fetchone() 
print(data[0]) 

通緝我得到以下結果:

('Johnny', 'None') 

現在我試圖更新這一行,它的工作原理如果我這樣做:

cur.execute('UPDATE mytable SET status = "Online" WHERE name is "Johnny"') 

但是,如果我想用'?'更新它,它就不起作用。任何想法爲什麼?

cur.execute('UPDATE mytable SET status = "Online" WHERE name is ?', data[0]) 
con.commit() 
con.close() 

希望有任何幫助。謝謝。

+0

什麼是錯誤信息?是因爲你插入了兩個參數,但'execute'只有一個? – imant

+0

「sqlite3.ProgrammingError:提供的綁定數量不正確。」我沒有選擇數據[0],這是元組的第一個值。 –

+0

你的意思是'data [0]'的值是「Johnny」?糾正我,如果我錯了。 – imant

回答

2
cur.execute('UPDATE mytable SET status = "Online" WHERE name is ?', (data[0],)) 

execute需要一個元組作爲輸入參數。因此,即使只插入一個值,也應該將其格式化爲一個元組。

雖然在你的問題中你說data[0] = ('Johnny', 'None'),在註釋中你指出data[0]是元組的第一個值。所以我認爲後者是這種情況。

+0

是的,這是正確的。非常感謝你。 –