tengo este código:¿Cómo verifico si una inserción fue exitosa con MySQLdb en Python?
cursor = conn.cursor()
cursor.execute(("insert into new_files (videos_id, filename, "
"is_processing) values (%s,%s,1)"), (id, filename))
logging.warn("%d", cursor.rowcount)
if (cursor.rowcount == 1):
logging.info("inserted values %d, %s", id, filename)
else:
logging.warn("failed to insert values %d, %s", id, filename)
cursor.close()
diversión como es, cursor.rowcount
es siempre uno, a pesar de que al día mi base de datos para hacer el videos_id una clave única. Es decir, la inserción falla porque en mis pruebas aparecerá el mismo videos_id
(y cuando reviso la base de datos, no se insertó nada). Pero por alguna razón, el rowcount
es siempre 1 - incluso el logging.warn
tengo escupe un rowcount
de 1.
Entonces, la pregunta:
¿Puedo usar rowcount
de averiguar si un inserto fue bien? Si es así, ¿qué estoy (presumiblemente) haciendo mal? de lo contrario, ¿cómo puedo verificar si un inserto fue correcto?
Eres un campeón, gracias – bharal
Pregunta. ¿Qué sucede si inserta 500 registros a la vez antes de confirmar (ya sea por una consulta larga o múltiples inserciones discretas)? es decir, solo estoy cometiendo cada 500 registros; si uno de esos registros falla, ¿cómo imprimo solo ese registro y continúo insertando los otros? – gunslingor
@ user3656612 depende de por qué fallan. Si el problema es romper algunas restricciones, puede usar INSERT IGNORE or INSERT ... ON DUPLICATE KEY UPDATE. Si se trata de un error de conexión, no puede hacer nada. Si se trata de un error de sintaxis, debería considerar corregir errores en su aplicación. – newtover