在做我的項目時,我不得不將數據更新爲另一個數據。我試圖刪除現有的舊數據並插入新數據,但是這個過程改變了數據的順序,所以我不想要那種方法。如何在Python中更新sqlite3數據時解決錯誤?
我想要做的是找到一個值爲old
的數據,並將其替換爲new
中的值。所以這是我做的代碼:
import sqlite3
old = ('Test1', 'Test2', 'Test3', 'Test4')
new = ('Test_1', 'Test_2', 'Test_3', 'Test_4')
conn = sqlite3.connect('TestDB')
c = conn.cursor()
c.execute("CREATE TABLE IF NOT EXISTS Test (Menu1 text, Menu2 text, Menu3 text, Menu4 text)")
conn.commit()
c.execute("INSERT INTO Test VALUES (?, ?, ?, ?)", old)
conn.commit()
c.execute("UPDATE Test SET Menu1 = ? and Menu2 = ? and Menu3 = ? and Menu4 = ? WHERE Menu1 = ? and Menu2 = ? and Menu3 = ? and Menu4 = ?", new + old)
conn.commit()
c.execute("SELECT * FROM Test")
print(c.fetchall())
但我有一個問題,更新數據集:代碼的結果是:
[('0', 'Test2', 'Test3', 'Test4')]
那麼,爲什麼在地球上會出現這個問題我該如何解決這個問題?我一直試圖解決這個問題好幾天,但我仍然無法解決這個問題。
你可以嘗試更新後調用'conn.commit()'嗎? – bernie
哦,我做了'conn.commit()',但錯過了寫在發佈時。雖然謝謝! –
您正在'UPDATE'的'SET'部分使用'和',在那裏您應該使用','。 'UPDATE Test SET Menu1 =? ,Menu2 =? ,Menu3 =? ,Menu4 =? WHERE Menu1 =?和Menu2 =?和Menu3 =?和Menu4 =?' –