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
UNIQUEoPRIMARY KEYrestricción en lanamecolumna, y - no desea duplicar
nameinserciones 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 =?)