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 <[email protected]> > La excepción está en el título: > > 'int' does not support the buffer interface > > --- On *Mon, 2/21/11, marmolro <[email protected]>* wrote: > > > From: marmolro <[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, 7:51 PM > > > Buenas! > > en el correo > > 2011/2/21 Spectrum Cuarenta y ocho k > <[email protected]<http://mc/[email protected]> > > > > 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 > <[email protected]<http://mc/[email protected]> > >* wrote: > > > From: marmolro <[email protected]<http://mc/[email protected]> > > > > Subject: Re: [Python-es] 'int' does not support the buffer interface > To: "La lista de python en castellano" > <[email protected]<http://mc/[email protected]> > > > 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 > <[email protected]<http://mc/[email protected]> > > > > 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 > [email protected] <http://mc/[email protected]> > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > -----Inline Attachment Follows----- > > > _______________________________________________ > Python-es mailing list > [email protected] <http://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://mc/[email protected]> > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > > > -----Inline Attachment Follows----- > > _______________________________________________ > Python-es mailing list > [email protected] <http://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/
