Hola Gerardo. 
Cuando el fallo está al crear la sentencia sql, el programa da otro error 
diferente (que no recuerdo ahora mismo) y no ejecutaría el curs.execute(query). 
En mi caso las que debo escapar son las ", y lo hago antes de pasarle el 
parámetro autor y cita, vamos que entran despiojados, por lo menos de ". 
En el caso de que no estuviera bien formada la sql no entraría en la BD y sigue 
entrando y a la vez, dando el error, que es lo que me mosquea. Porque ahora 
mismo tengo el programa funcionando y haciendo su función correctamente, pero 
devuelve también el mensaje de error, como si hubiera fallado.
La única línea que puede lanzar el fallo es curs.execute(query), ya que es lo 
único que tengo en el try.
Los campos de la BD son varchar y los parámetros que entran son str.

Un saludo.



--- On Mon, 2/21/11, gerardo Juarez <[email protected]> wrote:

From: gerardo Juarez <[email protected]>
Subject: Re: [Python-es] 'int' does not support the buffer interface
To: "La lista de python en castellano" <[email protected]>
Date: Monday, February 21, 2011, 3:37 PM

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 /<[email protected]>/* wrote:
> 
> 
>     From: Marcos Sánchez Provencio <[email protected]>
>     Subject: Re: [Python-es] 'int' does not support the buffer interface
>     To: "La lista de python en castellano" <[email protected]>
>     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
>     [email protected] </mc/[email protected]>
>     http://mail.python.org/mailman/listinfo/python-es
>     FAQ: http://python-es-faq.wikidot.com/
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Python-es mailing list
> [email protected]
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>   

_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/



      
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a