Lors de la réalisation de mon projet, j'ai dû mettre à jour une donnée dans une autre donnée. J'ai essayé de supprimer les anciennes données existantes et d'insérer de nouvelles données, mais cette procédure change l'ordre des données, donc je ne veux pas ce genre de méthode.Comment résoudre une erreur lors de la mise à jour des données sqlite3 en Python?
Ce que j'essaie de faire est de trouver une donnée qui a des valeurs de old
et de le remplacer par les valeurs dans new
. Donc, c'est le code que je l'ai fait:
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())
Mais j'ai eu un problème de mise à jour de l'ensemble de données: le résultat du code était:
[('0', 'Test2', 'Test3', 'Test4')]
Alors pourquoi diable suis-je avoir ce problème et comment puis-je résoudre ce problème? J'ai essayé de résoudre ce problème pendant des jours et je ne pouvais toujours pas résoudre le problème.
Pouvez-vous essayer d'appeler 'conn.commit()' après la mise à jour? – bernie
Oh, j'ai fait 'conn.commit()' mais j'ai manqué de l'écrire en postant. Merci quand même! –
Vous utilisez 'and' dans la section' SET' de 'UPDATE', où vous devriez utiliser', '. 'UPDATE Test SET Menu1 =? , Menu2 =? , Menu3 =? , Menu4 =? OERE Menu1 =? et Menu2 =? et Menu3 =? et Menu4 =? ' –