Cel mai bun răspuns
Cum se introduce într-un tabel prin Python dacă o valoare nu există există deja în SQLite?
cursor.execute("INSERT INTO author (name) VALUES(?) SELECT * FROM author WHERE NOT EXISTS(SELECT * FROM author)", (aname, ))
Presupunând:
- aveți un
UNIQUE
sauPRIMARY KEY
constrângere pe coloananame
și - nu doriți inserții duplicate
name
pentru a arunca erori,
atunci interogarea SQLite ar fi:
INSERT OR IGNORE INTO author (name) VALUES (?)
(Citiți pagina SQLite Clauza ON CONFLICT pentru a înțelege mai multe despre rezolvarea conflictelor și cele cinci opțiuni diferite de rezolvare disponibil – INSERT OR IGNORE
este doar zahăr sintactic pentru INSERT ON CONFLICT IGNORE
.)
Dacă nu are nicio constrângere în coloana name
, atunci cel mai sigur mod de a face acest lucru este ca două interogări separate:
-
SELECT * FROM author WHERE name=?
, atunci dacă aceasta revine cu 0 rânduri potrivite, -
INSERT INTO author (name) VALUES (?)
Răspunde
declarația SQL în sine este greșită și * în general ar trebui evitat
introduceți în autor (nume)
selectați? de la autor
unde nu există (selectați 42 din autor unde nume =?)