Paras vastaus
Kuinka lisätään taulukkoon Pythonin kautta, jos arvo ei ole Onko SQLite jo olemassa?
cursor.execute("INSERT INTO author (name) VALUES(?) SELECT * FROM author WHERE NOT EXISTS(SELECT * FROM author)", (aname, ))
Olettaen:
- sinulla on
UNIQUEtaiPRIMARY KEYrajoitusname-sarakkeessa ja - et haluavat kopiot
namelisäävät virheitä,
silloin SQLite-kysely olisi:
INSERT OR IGNORE INTO author (name) VALUES (?)
(Lue SQLite ON CONFLICT -lauseke -sivu saadaksesi lisätietoja konfliktinratkaisusta ja viidestä eri ratkaisuvaihtoehdosta käytettävissä – INSERT OR IGNORE on vain syntaktinen sokeri kohteelle INSERT ON CONFLICT IGNORE.)
Jos ei ole mitään rajoituksia sarakkeessa name, turvallisin tapa tehdä tämä on kaksi erillistä kyselyä:
-
SELECT * FROM author WHERE name=?, sitten jos siinä on 0 vastaavaa riviä, -
INSERT INTO author (name) VALUES (?)
vastaus
itse SQL-käsky on väärä, ja * yleensä tulisi välttää
lisää kirjoittajaan (nimi)
valitse? kirjoittajalta
missä ei ole olemassa (valitse 42 tekijästä, jossa nimi =?)