Come inserire in una tabella tramite Python se un valore non esiste già in SQLite


Migliore risposta

Come inserisco in una tabella tramite Python se un valore non esiste esiste già in SQLite?

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

Supponendo:

  • tu abbia un UNIQUE o PRIMARY KEY vincolo sulla colonna name e
  • non desidera duplicare inserimenti name per generare errori,

la query SQLite sarebbe:

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

(Leggi la pagina SQLite ON CONFLICT per saperne di più sulla risoluzione dei conflitti e sulle cinque diverse scelte di risoluzione disponibile— INSERT OR IGNORE è solo zucchero sintattico per INSERT ON CONFLICT IGNORE.)

Se non ha alcun vincolo sulla colonna name, quindi il modo più sicuro per farlo è due query separate:

  • SELECT * FROM author WHERE name=?, quindi se viene restituito con 0 righe corrispondenti,
  • INSERT INTO author (name) VALUES (?)

Risposta

listruzione SQL stessa è sbagliata e * in generale dovrebbe essere evitata

inserire nellautore (nome)

selezionare? dallautore

dove non esiste (seleziona 42 dallautore dove nome =?)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *