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/

Responder a