Python-Variablenersatz in Sqlite3 INSERT-Anweisung

Gibt es eine Möglichkeit, den Variablenaustausch von Python zu verwenden, wenn man Sqlite-Daten aktualisiert, die auf ein bekanntes rowid ausgerichtet sind? Ich versuche etwas zu sagen:

cursor.execute('INSERT INTO Words(rowid,f1,f2) VALUES(?,?,?)', [rowid,2,3]) 

Das Problem ist, dass dies mit Fehler fehlschlägt:

 sqlite3.IntegrityError: PRIMARY KEY must be unique 

Ich möchte eine Liste von Werten in den vorhandenen Datensatz der Tabelle schreiben, ohne die rowid-Nummer zu ändern. Was ist der akzeptierte Weg, um alle Felder aus einer Liste von Werten zu aktualisieren?

One Solution collect form web for “Python-Variablenersatz in Sqlite3 INSERT-Anweisung”

Sie verwenden UPDATE anstelle von INSERT :

 cursor.execute('UPDATE Words SET f1=?, f2=? WHERE rowid=?', [2, 3, rowid]) 

Dies sagt der Datenbank, die f1 und f2 Spalten mit neuen Werten zu aktualisieren, für alle Zeilen, in denen rowid mit dem angegebenen Wert übereinstimmt.

Alternativ können INSERT OR REPLACE Syntax INSERT OR REPLACE . Wenn eine Eindeutigkeitsbeschränkung (wie der Primärschlüssel nicht eindeutig ist) verletzt wird, wird stattdessen ein UPDATE ausgegeben, aber wenn rowid noch nicht vorhanden ist, wird eine neue Zeile eingefügt:

 cursor.execute('INSERT OR REPLACE INTO Words(rowid,f1,f2) VALUES(?,?,?)', [rowid,2,3]) 
  • Django ManyToMany Beziehungsfehler
  • Ganzes JSON in ein SQLite-Feld mit Python
  • Bestimmen Sie die maximale Anzahl von Spalten aus sqlite3
  • Eclipse-pydev, beim Versuch zu versuchen sqlite3 im immer "Undefinierte Variable aus Import: connect"
  • Wie kann ich das sqlite3 Paket in Python 2.6 aktualisieren?
  • Wie man Werte von zwei verschiedenen sqlite3 Tabellen in python subtrahiert
  • Sqlite - Verwenden Sie Backticks (`) oder doppelte Anführungszeichen (") mit Python
  • Mit Sqlite3 auf Heroku Cedar Stack
  • Was passiert, wenn ich die Datenbankverbindung nicht in Python SQLite schließe
  • SQLite 3: sqlite InterfaceError: Fehlerbindungsparameter 0 - wahrscheinlich nicht unterstützter Typ
  • Einrichten der Konfiguration der sqlite3-Datenbank in Python SQLITE_CONFIG_MULTITHREAD
  • Python ist die beste Programmiersprache der Welt.