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

marmolro marmolro en gmail.com
Lun Feb 21 21:44:37 CET 2011


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>

> 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>* 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: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://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/189f1786/attachment.html>


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