Cómo insertar en una tabla a través de Python si un valor aún no existe en SQLite


Mejor respuesta

¿Cómo inserto en una tabla a través de Python si un valor no existe? ¿ya existe en SQLite?

cursor.execute("INSERT INTO author (name) VALUES(?) SELECT * FROM author WHERE NOT EXISTS(SELECT * FROM author)", (aname, ))

Suponiendo:

  • tienes un UNIQUE o PRIMARY KEY restricción en la name columna, y
  • no desea duplicar name inserciones para arrojar errores,

entonces la consulta SQLite sería:

INSERT OR IGNORE INTO author (name) VALUES (?)

(Lea la página ON CONFLICT de SQLite para comprender más sobre la resolución de conflictos y las cinco opciones de resolución diferentes disponible— INSERT OR IGNORE es simplemente azúcar sintáctico para INSERT ON CONFLICT IGNORE.)

Si no tiene restricciones en la columna name, entonces la forma más segura de hacerlo es dos consultas independientes:

  • SELECT * FROM author WHERE name=?, entonces si eso vuelve con 0 filas coincidentes,
  • INSERT INTO author (name) VALUES (?)

Respuesta

la declaración SQL en sí es incorrecta, y * en general debe evitarse

insertar en autor (nombre)

seleccionar? del autor

donde no existe (seleccione 42 del autor donde nombre =?)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *