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
oPRIMARY KEY
vincolo sulla colonnaname
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 =?)