<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Hola Gerardo. <br>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 ". <br>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.<br>La única línea que puede lanzar el fallo es curs.execute(query), ya que es lo único que tengo en el try.<br>Los campos de la BD son varchar y los parámetros que entran son str.<br><br>Un saludo.<br><br><br><br>--- On <b>Mon, 2/21/11, gerardo
Juarez <i><gerardojuarez@buyteknet.info></i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: gerardo Juarez <gerardojuarez@buyteknet.info><br>Subject: Re: [Python-es] 'int' does not support the buffer interface<br>To: "La lista de python en castellano" <python-es@python.org><br>Date: Monday, February 21, 2011, 3:37 PM<br><br><div class="plainMail">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 (<a href="http://initd.org/psycopg/docs/usage.html#the-problem-with-the-query-parameters" target="_blank">http://initd.org/psycopg/docs/usage.html#the-problem-with-the-query-parameters</a>). 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.<br><br>Yo recomendaría tres acciones:<br>- cambiar la sintaxis como sugiere Marco y reintentar.<br>- ver si el error está adscrito a una línea en particular o asegurarse cuál es la última línea que se ejecuta.<br>- verificar qué tipos tienen las columnas text y author en la tabla de la base y en el código del programa.<br><br>Si puedes enviar esos datos a la lista, probablemente pudiéramos tener otra pista o sugerencia.<br><br>saludos<br>Gerardo<br><br>Spectrum Cuarenta y ocho k wrote:<br>> 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.<br>> 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.<br>> <br>> Gracias de todas maneras.<br>> <br>> --- On *Mon, 2/21/11, Marcos Sánchez Provencio /<<a ymailto="mailto:rapto@arrakis.es" href="/mc/compose?to=rapto@arrakis.es">rapto@arrakis.es</a>>/* wrote:<br>> <br>> <br>> From: Marcos Sánchez Provencio <<a ymailto="mailto:rapto@arrakis.es" href="/mc/compose?to=rapto@arrakis.es">rapto@arrakis.es</a>><br>> Subject: Re: [Python-es] 'int' does not support the buffer interface<br>> To: "La lista de python en castellano" <<a ymailto="mailto:python-es@python.org" href="/mc/compose?to=python-es@python.org">python-es@python.org</a>><br>>
Date: Monday, February 21, 2011, 1:23 PM<br>> <br>> Hola<br>> <br>> Te estás haciendo t mismo un sql injection. Seguramente, si tienes<br>> apóstrofes en los datos, casque. Repasa la documentación de uso de<br>> parámetros en DB-API.<br>> <br>> Prueba<br>> def insertar(autor, texto):<br>> query = "INSERT INTO famous_quote (text, author) VALUES<br>> (%s,%s)<br>> curs = conn.cursor()<br>> try:<br>> curs.execute(query, (autor, texto))<br>>
except Exception as errr:<br>> print("mesaje del fallo: " + str(errr))<br>> print("Fallo en: " + query)<br>> pass<br>> finally:<br>> if(curs):<br>> curs.close()<br>> conn.commit()<br>> print("OK!")<br>> <br>>
El lun, 21-02-2011 a las 04:40 -0800, Spectrum Cuarenta y ocho k<br>> escribió:<br>> > query = "INSERT INTO famous_quote (text, author) VALUES (\"%s\",<br>> \"%s<br>> > \")" % (texto, autor)<br>> <br>> _______________________________________________<br>> Python-es mailing list<br>> <a ymailto="mailto:Python-es@python.org" href="/mc/compose?to=Python-es@python.org">Python-es@python.org</a> </mc/compose?to=<a ymailto="mailto:Python-es@python.org" href="/mc/compose?to=Python-es@python.org">Python-es@python.org</a>><br>> <a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>> FAQ: <a
href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>> <br>> <br>> ------------------------------------------------------------------------<br>> <br>> _______________________________________________<br>> Python-es mailing list<br>> <a ymailto="mailto:Python-es@python.org" href="/mc/compose?to=Python-es@python.org">Python-es@python.org</a><br>> <a href="http://mail.python.org/mailman/listinfo/python-es" target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>> FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br>> <br><br>_______________________________________________<br>Python-es mailing list<br><a ymailto="mailto:Python-es@python.org" href="/mc/compose?to=Python-es@python.org">Python-es@python.org</a><br><a href="http://mail.python.org/mailman/listinfo/python-es"
target="_blank">http://mail.python.org/mailman/listinfo/python-es</a><br>FAQ: <a href="http://python-es-faq.wikidot.com/" target="_blank">http://python-es-faq.wikidot.com/</a><br></div></blockquote></td></tr></table><br>