Cum se introduce într-un tabel prin Python dacă o valoare nu există deja în SQLite


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 sau PRIMARY KEY constrângere pe coloana name ș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 =?)

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *