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

gerardo Juarez gerardojuarez en buyteknet.info
Lun Feb 21 16:37:25 CET 2011


De todas formas, la interpolación de variables en un comando SQL es una 
práctica suficientemente mala como para que estemos seguros que ese no 
es el problema 
(http://initd.org/psycopg/docs/usage.html#the-problem-with-the-query-parameters). 
Lo mismo que dice esta liga más o menos se dice en relación con 
MySQLdb.  En tu caso, pudiera estarse generando una condición 
acumulativa que después de cierto tiempo de trabajo te da el error.

Yo recomendaría tres acciones:
- cambiar la sintaxis como sugiere Marco y reintentar.
- ver si el error está adscrito a una línea en particular o asegurarse 
cuál es la última línea que se ejecuta.
- verificar qué tipos tienen las columnas text y author en la tabla de 
la base y en el código del programa.

Si puedes enviar esos datos a la lista, probablemente pudiéramos tener 
otra pista o sugerencia.

saludos
Gerardo

Spectrum Cuarenta y ocho k wrote:
> Ese no debe ser el problema, hay muchas con apóstrofes y entran sin 
> problemas. Las dobles comillas las escapo en otra parte del código, 
> antes de pasárselo a esa función. Si fuera eso, fallaría siempre, y 
> solo ejecutaría el error. De hecho, cuando pasa eso, da un error 
> distinto y no te deja insertar la fila.
>  Lo raro de esto, es que solo pasa depués de un tiempo de estar 
> metiendo filas, y aunque sigue funcionando (entran en la tabla, por lo 
> que se intuye que no hay error) se mete en el try y lo ejecuta todo. 
> Después de reiniciar el ordenata, filas que antes marcaban error, 
> ahora no lo marcan, sin haber hecho cambios sobre el código.
>
> Gracias de todas maneras.
>
> --- On *Mon, 2/21/11, Marcos Sánchez Provencio /<rapto en arrakis.es>/* 
> wrote:
>
>
>     From: Marcos Sánchez Provencio <rapto en arrakis.es>
>     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, 1:23 PM
>
>     Hola
>
>     Te estás haciendo t mismo un sql injection. Seguramente, si tienes
>     apóstrofes en los datos, casque. Repasa la documentación de uso de
>     parámetros en DB-API.
>
>     Prueba
>     def insertar(autor, texto):
>             query = "INSERT INTO famous_quote (text, author) VALUES
>     (%s,%s)
>             curs = conn.cursor()
>             try:
>                     curs.execute(query, (autor, texto))
>             except Exception as errr:
>                     print("mesaje del fallo: " + str(errr))
>                     print("Fallo en: " + query)
>                     pass
>             finally:
>                     if(curs):
>                             curs.close()
>                             conn.commit()
>                             print("OK!")
>
>     El lun, 21-02-2011 a las 04:40 -0800, Spectrum Cuarenta y ocho k
>     escribió:
>     > query = "INSERT INTO famous_quote (text, author) VALUES (\"%s\",
>     \"%s
>     > \")" % (texto, autor)
>
>     _______________________________________________
>     Python-es mailing list
>     Python-es en python.org </mc/compose?to=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/
>   



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