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

Spectrum Cuarenta y ocho k s_48k en yahoo.com
Lun Feb 21 21:57:49 CET 2011


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>

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>


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> 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, 7:51 PM

Buenas!
en el correo

2011/2/21 Spectrum Cuarenta y ocho k <s_48k en 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> 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, 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>




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://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://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/





-----Inline Attachment Follows-----

_______________________________________________
Python-es mailing list
Python-es en 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/





-----Inline Attachment Follows-----

_______________________________________________
Python-es mailing list
Python-es en 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/





-----Inline Attachment Follows-----

_______________________________________________
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/07847735/attachment.html>


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