Einfügen in eine Tabelle über Python, wenn in SQLite noch kein Wert vorhanden ist


Beste Antwort

Wie füge ich über Python in eine Tabelle ein, wenn ein Wert nicht vorhanden ist bereits in SQLite vorhanden?

cursor.execute("INSERT INTO author (name) VALUES(?) SELECT * FROM author WHERE NOT EXISTS(SELECT * FROM author)", (aname, ))

Angenommen:

  • Sie haben eine UNIQUE oder PRIMARY KEY Einschränkung für die Spalte name und
  • nicht Wenn doppelte name Einfügungen Fehler auslösen sollen,

lautet die SQLite-Abfrage:

INSERT OR IGNORE INTO author (name) VALUES (?)

(Lesen Sie die Seite SQLite ON CONFLICT , um mehr über die Konfliktlösung und die fünf verschiedenen Lösungsoptionen zu erfahren verfügbar – INSERT OR IGNORE ist nur syntaktischer Zucker für INSERT ON CONFLICT IGNORE.)

Wenn Sie hat keine Einschränkungen für die Spalte name. Der sicherste Weg, dies zu tun, ist zwei separate Abfragen:

  • SELECT * FROM author WHERE name=? Wenn dies mit 0 übereinstimmenden Zeilen zurückkommt,
  • INSERT INTO author (name) VALUES (?)

Antwort

Die SQL-Anweisung selbst ist falsch und * sollte im Allgemeinen vermieden werden

in Autor (Name) einfügen

auswählen? vom Autor

wo nicht vorhanden (wählen Sie 42 vom Autor mit dem Namen =?)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.