[Python-es] 'int' does not support the buffer interface

miguel zamora m. mzmprog en gmail.com
Mar Feb 22 00:39:04 CET 2011


def insertar(autor, texto):

        try:
            query = "INSERT INTO famous_quote (text, author) VALUES (\"%s\",
\"%s\")" % (texto, autor)
            curs = conn.cursor()
            curs.execute(query)

            if(curs):
                conn.autocommit(true)
                curs.close()
                print("OK!")

        except Exception as errr:

                print("mesaje del fallo: " + str(errr))
                print("Fallo en: " + query)
                # guarda esto en un log
                pass  #  <--- esto no lo haria ya que no sabria donde se
cayo


no es mucho lo que describes de tu programa ¿pertenece a una clase ?

Creo que la solucion es trabajar en base a test para python tienes muchas
posibilidades de
crear aplicaciones robustas y controlando los errores y dejando un minimo
margen para bugs
o mantenciones es parte de una buena practica de programacion y te aseguro
que todo
funcionara excelente

yo por mi parte trabajo en python 2.7 en ubuntu

busca si la libreria que usas tiene bugs




El 21 de febrero de 2011 17:57, Spectrum Cuarenta y ocho k
<s_48k en yahoo.com>escribió:

> Gracias.
>
> --- On *Mon, 2/21/11, marmolro <marmolro en gmail.com>* wrote:
>
>
> From: marmolro <marmolro en gmail.com>
> Subject: Re: [Python-es] 'int' does not support the buffer interface
> To: "La lista de python en castellano" <python-es en python.org>
> Date: Monday, February 21, 2011, 8:44 PM
>
>
> Apostaría que el error está en alguna c-api, pero no sabría decirte más....
> puedes probar con http://code.google.com/p/pymysql/issues/list.
>
> De todas formas intenta lo que te ha comentado la gente: reutiliza el
> cursor y haz commit cada n registros insertados. Igual al no requerir tanto
> del commit no caes en ese bug
>
> Un saludo,
> marmolro
>
> 2011/2/21 Spectrum Cuarenta y ocho k <s_48k en yahoo.com<http://mc/compose?to=s_48k@yahoo.com>
> >
>
> Este es el traceback:
>
> Traceback (most recent call last):
>   File "C:\Users\marcelo\Desktop\prueba_archivos.py", line 53, in <module>
>     leeQuote(n_archivo_, principio_, final_, principio_t, final_t)
>   File "C:\Users\marcelo\Desktop\prueba_archivos.py", line 46, in leeQuote
>     insertar(autor, cita)
>   File "C:\Users\marcelo\Desktop\prueba_archivos.py", line 18, in insertar
>     curs.execute(query)
>   File "C:\Python31\pymysql\cursors.py", line 108, in execute
>     self.errorhandler(self, exc, value)
>   File "C:\Python31\pymysql\connections.py", line 182, in
> defaulterrorhandler
>     raise Error(errorclass, errorvalue)
> pymysql.err.Error: (<class 'TypeError'>, TypeError("'int' does not support
> the buffer interface",))
>
> Un saludo.
>
>
> --- On *Mon, 2/21/11, marmolro <marmolro en gmail.com<http://mc/compose?to=marmolro@gmail.com>
> >* wrote:
>
>
> From: marmolro <marmolro en gmail.com<http://mc/compose?to=marmolro@gmail.com>
> >
> Subject: Re: [Python-es] 'int' does not support the buffer interface
> To: "La lista de python en castellano" <python-es en python.org<http://mc/compose?to=python-es@python.org>
> >
> Date: Monday, February 21, 2011, 8:07 PM
>
>
> Buenas!
>
> ese es el mensaje, no la excepción :)  Añade un "raise" al final del bloque
> except: y se ve el traceback y la excepción.
>
> Respecto al finally echa un ojo a:
> http://docs.python.org/tutorial/errors.html#defining-clean-up-actions
>
> simplemente para ver que se ejecuta *siempre*, con independencia de si
> saltó la excepción o no....
>
> Un saludo,
> Marc
>
>
>
> 2011/2/21 Spectrum Cuarenta y ocho k <s_48k en yahoo.com<http://mc/compose?to=s_48k@yahoo.com>
> >
>
> La excepción está en el título:
>
> 'int' does not support the buffer interface
>
> --- On *Mon, 2/21/11, marmolro <marmolro en gmail.com<http://mc/compose?to=marmolro@gmail.com>
> >* wrote:
>
>
> From: marmolro <marmolro en gmail.com<http://mc/compose?to=marmolro@gmail.com>
> >
> Subject: Re: [Python-es] 'int' does not support the buffer interface
> To: "La lista de python en castellano" <python-es en python.org<http://mc/compose?to=python-es@python.org>
> >
> Date: Monday, February 21, 2011, 7:51 PM
>
>
> Buenas!
>
> en el correo
>
> 2011/2/21 Spectrum Cuarenta y ocho k <s_48k en yahoo.com<http://mc/compose?to=s_48k@yahoo.com>
> >
>
> Hola:
>  Si te fijas tengo el commit dentro de un if(cur), de esa manera, si el
> cursor, que es lo que tengo detro del try, falla, no se crearía el cur y por
> lo tanto tampoco se haría el commit()
>
> Realmente el cursor se crea con conn.cursor(), que está fuera del try, con
> lo que el if(cur) es inocuo. De todas formas, compruebas su creación, no su
> estado..
>
>
> ¿Porqué dices lo del 'except Exception' por ser demasiado general?
>
>
> Sí, demasiado general... como el comentario mio ;). En este caso yo
> prefiero que me salte la excepción hasta afuera con toda la información
> (¿que excepción es?¿cual es su traceback?)...
>
>
> Lo único que estoy utilizando es el módulo PyMySQL (porque fue el primero
> que encontré para python 3) de resto nada especial, leo unas cadenas de un
> fichero, y se las paso al la función que les he puesto.
>
>
> pega el traceback y la excepción así podemos ver por donde se queja (este
> módulo creo que era 100% python, así que en principio nada que ver con
> wrappers... ¿o sí?)
>
>
> Ahí estoy mirando en San Google a ver que ponen de la excepción, pero hay
> poquito, aunque tiene toda la pinta a ser algo de buffers como tú apuntas.
>
> Gracias.
>
>
>
> --- On *Mon, 2/21/11, marmolro <marmolro en gmail.com<http://mc/compose?to=marmolro@gmail.com>
> >* wrote:
>
>
> From: marmolro <marmolro en gmail.com<http://mc/compose?to=marmolro@gmail.com>
> >
>
> Subject: Re: [Python-es] 'int' does not support the buffer interface
> To: "La lista de python en castellano" <python-es en python.org<http://mc/compose?to=python-es@python.org>
> >
> Date: Monday, February 21, 2011, 4:31 PM
>
>
> Buenas!
>
> Es un error extraño, generalmente relacionado con buffers y el wrapping de
> c/c++ ... si nos das más datos sobre lo que utilizas igual suena más.
> Seguramente la excepción es inocua ya que te deja hacer el commit y te lo
> deja hacer bien, pero mejor investigar :)
>
> Varios apuntes:
>
>    - Hacer un except Exception siempre es mala idea :)
>    - El finally se ejecutará siempre, por lo que al hacer ahí el commit te
>    arriesgas a hacerlo sobre un "bloque" que ha generado excepción.
>    Casualmente, a ti te ha funcionado, pero no es lo habitual.
>
>
>
>
> 2011/2/21 Spectrum Cuarenta y ocho k <s_48k en yahoo.com<http://mc/compose?to=s_48k@yahoo.com>
> >
>
> Hola gente, he hecho un programa para insertar registros en una BD. Son
> bastantes, y lo estoy haciendo por tramos de 20.000 más o menos (de forma
> individual, vamos que hago correr el script cada 20000). El caso, es que
> funciona bastante bien, pero cuando llevo 3 o 4 partes, sigue funcionando...
> pero se salta el try. Me explico, inserta el registro,imprime el OK, pero
> también me ejecuta lo que está dentro del try y pone este error: 'int' does
> not support the buffer interface.
> Por lo tanto, sigue realizando su función pero enseña el error. Si reinicio
> el ordenador y vuelvo a ejecutarlo (exactamente el mismo código) ya no da el
> error. Me da la impresión que es algún buffer de python.
>
> ¿a alguien le suena algo de esto o parecido?
>
>
>
> Venga, un saludo.
>
> def insertar(autor, texto):
>         query = "INSERT INTO famous_quote (text, author) VALUES (\"%s\",
> \"%s\")" % (texto, autor)
>         curs = conn.cursor()
>         try:
>                 curs.execute(query)
>         except Exception as errr:
>                 print("mesaje del fallo: " + str(errr))
>                 print("Fallo en: " + query)
>                 pass
>         finally:
>                 if(curs):
>                         curs.close()
>                         conn.commit()
>                         print("OK!")
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org <http://mc/compose?to=Python-es@python.org>
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
>
> -----Inline Attachment Follows-----
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org <http://mc/compose?to=Python-es@python.org>
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org <http://mc/compose?to=Python-es@python.org>
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
>
> -----Inline Attachment Follows-----
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org <http://mc/compose?to=Python-es@python.org>
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org <http://mc/compose?to=Python-es@python.org>
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
>
> -----Inline Attachment Follows-----
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org <http://mc/compose?to=Python-es@python.org>
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org <http://mc/compose?to=Python-es@python.org>
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
>
> -----Inline Attachment Follows-----
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org <http://mc/compose?to=Python-es@python.org>
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110221/0f9e77b0/attachment.html>


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