Error de Mysql y como arreglarlo

Miguel Angel Garcia magmax9 en yahoo.es
Mar Dic 28 23:47:51 CET 2004


No tengo mucha idea de SQL, así que perdona si digo alguna estupidez.

> Estoy teniendo un problema con mysql desde python.
> Tengo que hacer actualizaciones intensivas sobre la base o sea hago 
> varias actualizaciones y en algun momento de las actualizaciones al azar 
> en cualquier momento se me corta el proceso con este error...

Quizá sea porque está haciendo un "commit". ¿Lanzas tú el "commit"
después de cada transacción? Si lo haces después de cada una es posible
que las haga más rápidas y no tengas ese problema.

> def sql01(db,sql,k):
>     # Procesa sobre Mysql para procesos que no devuelvan datos!!!
>     """ Hace una operacion sobre Mysql """
>     try:
>         if k == 'NULL': # Es cuando no viene los datos del sql aparte.
>             db.execute(sql)
>         else:
>             db.execute(sql,k)
>         return 0
>     except db.MySQLError, e:
>         print e
>         linea = "* Mysqlerror : " + str(e[0]) + " " + e[1]
>         gl(linea)
>         print linea
>         return -1
> 
> Mi idea es en el except  preguntar por el error y si es ese el error el 
> 2013 hacer una pausa de 5 segundos y despues reintentar grabar...
> Pero hay 2 cosas que no se hacer y por eso pido ayuda..
> una es hacer la pausa con que comando se hace pausa de xx segundos?
> y la otra es como hacer para despues de la pausa vuelva a intentarlo o 
> sea vuelva a try: para reintentar la grabacion, algo asi como un goto 
> que en python no existe.. :)

¿Qué tal con un "while (true)"? Ya saldrás del "while" con los
"return"s.

Y... ¡Por favor! Aunque un lenguaje tenga la instrucción maldita, ésta
NUNCA se debe usar. Jamás de los jamases ;)

Si quieres saber por qué, te remito al libro "la práctica de la
programación", de un tal Kernighan (muy recomendable).

Lo de los segundos es muy fácil:
---------------
import time
time.sleep(5)
---------------

Además, no consume CPU en la espera ;)

Ale, suerte y coméntanos cual fue la solución :D




Más información sobre la lista de distribución Python-es