Nejlepší odpověď
Jak vložit do tabulky přes Python, pokud hodnota není již v SQLite existují?
cursor.execute("INSERT INTO author (name) VALUES(?) SELECT * FROM author WHERE NOT EXISTS(SELECT * FROM author)", (aname, ))
Za předpokladu:
- máte
UNIQUEneboPRIMARY KEYomezení ve sloupcinamea - ne chcete, aby duplikáty
namevložily chyby,
pak by dotaz SQLite byl:
INSERT OR IGNORE INTO author (name) VALUES (?)
(Přečtěte si stránku SQLite ON CONFLICT clause , kde získáte další informace o řešení konfliktů a pěti různých možnostech řešení. available— INSERT OR IGNORE je jen syntaktický cukr pro INSERT ON CONFLICT IGNORE.)
Pokud nemají ve sloupci name žádná omezení, nejbezpečnějším způsobem je dva samostatné dotazy:
-
SELECT * FROM author WHERE name=?, pak pokud se vrátí s 0 odpovídajícími řádky, -
INSERT INTO author (name) VALUES (?)
odpověď
samotný příkaz SQL je nesprávný a obecně je třeba se vyhnout *
vložit do autora (jméno)
vybrat? od autora
kde neexistuje (vyberte 42 od autora, kde name =?)