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
UNIQUEoPRIMARY KEYvincolo sulla colonnanamee - non desidera duplicare inserimenti
nameper 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 =?)