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
UNIQUE
neboPRIMARY KEY
omezení ve sloupciname
a - ne chcete, aby duplikáty
name
vlož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 =?)