En python, estoy poblando una base de datos SQLITE utilizando la importación, por lo que puedo importar decenas de miles de filas de datos a la vez. Mis datos están contenidos en una lista de tuplas. Tenía mi base de datos configurada con las claves principales donde las quería.Continuar cargando después de IntegrityError
Problema que encontré fue que los errores de la clave primaria arrojarían un IntegrityError. Si manejo la excepción, mi script deja de importar en el conflicto de la clave principal.
intento:
try:
self.curs.executemany("INSERT into towers values (NULL,?,?,?,?)",self.insertList)
except IntegrityError:
print "Primary key error"
conn.commit()
Así que mis preguntas son, en pitón del bote usando ImportMany I:
1. Captura los valores que violan la clave principal?
2. Continuar cargando datos después de obtener mis errores de clave primaria.
Veo por qué no continúa cargando, porque después de la excepción, confirmo los datos en la base de datos. Sin embargo, no sé cómo continuar donde lo dejé.
Unforutnley No puedo copiar y pegar todo el código en esta red, cualquier ayuda sería muy apreciada. En este momento no tengo PK establecidos como un trabajo alrededor ...
Según tengo entendido, 'executemany' existe porque ofrece un aumento de velocidad significativo sobre los comandos' execute' iterados por python. Entonces, su solución, si bien funcionaría, ralentizará significativamente la enorme cantidad de datos importados. Una solución sería hacer un seguimiento de las claves principales que se han agregado en un conjunto de python y filtrar la lista de inserción antes de tiempo antes de alimentar al cursor. –
@PeterMcMahan OK Estoy de acuerdo. No es un código eficiente. Solo "funciona" como dices. – jheyse