Re: [Python-es] ¿Para que están usando (o han usado) ustedes Python?

2011-02-21 Por tema Horacio
Para cálculos en bioinformática y biofísica. Así como desarrollar GUI para
esos temas... (en esto último ando flojo)
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


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

2011-02-21 Por tema Spectrum Cuarenta y ocho k
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 2). 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
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


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

2011-02-21 Por tema Marcos Sánchez Provencio
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@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] ¿Para que están usando (o han usado) ustedes Python?

2011-02-21 Por tema Rubiela Alicia García Espino
Yo estoy iniciando en su uso y específicamente en el area de SIG combinado
con ArcGis.

2011/2/9 Spectrum Cuarenta y ocho k s_...@yahoo.com

 La idea de este hilo es saber que cosas están haciendo (o han hecho) la
 gente de la lista con Python y si usan el lenguaje de forma profesional o
 solo para trabajos personales.

 Empiezo yo:
 Por lo pronto estoy empezando y estoy realizando una aplicación gráfica a
 nivel personal para la recogida de datos mediante un formulario y su
 posterior comparación mediante gráficas.


 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/




-- 
Rubiela A. Garcia E.
Analista SIG / Programadora
MIDA - PRONAZA
---
Three grand essentials to happiness in this life are something to do,
something to love, and something to hope for (Gen.R.Odierno:)
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


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

2011-02-21 Por tema Spectrum Cuarenta y ocho k
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 ra...@arrakis.es wrote:

From: Marcos Sánchez Provencio ra...@arrakis.es
Subject: Re: [Python-es] 'int' does not support the buffer interface
To: La lista de python en castellano python-es@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@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/



  ___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


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

2011-02-21 Por tema gerardo Juarez
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 /ra...@arrakis.es/* 
wrote:



From: Marcos Sánchez Provencio ra...@arrakis.es
Subject: Re: [Python-es] 'int' does not support the buffer interface
To: La lista de python en castellano python-es@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@python.org /mc/compose?to=Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/




___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
  


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


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

2011-02-21 Por tema marmolro
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 s_...@yahoo.com

 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 2). 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
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


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

2011-02-21 Por tema miguel zamora m.
debes de usar el metodo refresh para los datos si la base se bloquea no
podras insertar nada
ademas usa algo asi
self.con.autocommit(True)



El 21 de febrero de 2011 09:40, Spectrum Cuarenta y ocho k
s_...@yahoo.comescribió:

 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 2). 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
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/




-- 
Miguel Zamora M.
Programador en Computacion e Informatica
08-1351249
mzmp...@gmail.com
Santiago-Chile
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


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

2011-02-21 Por tema Spectrum Cuarenta y ocho k
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()

¿Porqué dices lo del 'except Exception' por ser demasiado general?

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.

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 marmo...@gmail.com wrote:

From: marmolro marmo...@gmail.com
Subject: Re: [Python-es] 'int' does not support the buffer interface
To: La lista de python en castellano python-es@python.org
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 s_...@yahoo.com

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 2). 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

Python-es@python.org

http://mail.python.org/mailman/listinfo/python-es

FAQ: http://python-es-faq.wikidot.com/





-Inline Attachment Follows-

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/



  ___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


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

2011-02-21 Por tema gerardo Juarez
No me había fijado que el commit lo hace por cada registro. Por  lo que 
nos describe, la tarea que se ejecuta para procesar unos 2 registros 
parece ser una tarea 'batch'. Como tal, sería mejor tal vez procesar 
todos los registros y hasta el final aplicar el commit(), de lo 
contrario es como sugiere Miguel aquí abajo, de mejor poner la base en 
autocommit(). Claro, esto hará que se tarde muchísimo, en comparación de 
aplicar el commit al final.


Por otra parte, no sé si siquiera el commit() esté haciendo algo, porque 
(está usando Mysql correcto?) entonces el 'storage-engine' por omisión 
es MyISAM y éste no tiene transacciones, por lo cual permite pero ignora 
silenciosamente los 'commits'. Para poder usarlo, debería estar la tabla 
en cuestión almacenada con InnoDb, y la base en un modo que sea distinto 
de autocommit. Entonces sí tendría sentido el commit y creo que debería 
ser al final de los 2 registros y no con cada uno, salvo un 
requerimiento muy especial que no conocemos.


Otra posibilidad es que está usando PyMysql, que es un módulo 
relativamente nuevo. No convendría probar con Mysqldb, que es ya muy 
estable y ver si el error se repite? Igual hay que reportar un problema.


saludos
Gerardo

miguel zamora m. wrote:
debes de usar el metodo refresh para los datos si la base se bloquea 
no podras insertar nada

ademas usa algo asi
self.con.autocommit(True)



El 21 de febrero de 2011 09:40, Spectrum Cuarenta y ocho k 
s_...@yahoo.com mailto:s_...@yahoo.com escribió:


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
2). 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
Python-es@python.org mailto:Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/




--
Miguel Zamora M.
Programador en Computacion e Informatica
08-1351249
mzmp...@gmail.com mailto:mzmp...@gmail.com
Santiago-Chile



___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
  


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


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

2011-02-21 Por tema Spectrum Cuarenta y ocho k
Hola Gerardo. 
Si uso MySql. Había puesto el commit por cada registro para que si había algún 
fallo, por lo menos, tener guardado lo que iba pasando a la base de datos y no 
perderlo todo. Pero apunto el tema de ponerlo al final, para que haga todos los 
registros a la vez y mejorar el rendimiento.

En cuanto al módulo Mysqldb, me pareció entender que no había para python 3, 
por eso usé PyMySQL. Y como bien dices, es posible que sea un fallo del módulo.

Gracias y un saludo.

--- On Mon, 2/21/11, gerardo Juarez gerardojua...@buyteknet.info wrote:

From: gerardo Juarez gerardojua...@buyteknet.info
Subject: Re: [Python-es] 'int' does not support the buffer interface
To: La lista de python en castellano python-es@python.org
Date: Monday, February 21, 2011, 6:17 PM

No me había fijado que el commit lo hace por cada registro. Por  lo que nos 
describe, la tarea que se ejecuta para procesar unos 2 registros parece ser 
una tarea 'batch'. Como tal, sería mejor tal vez procesar todos los registros y 
hasta el final aplicar el commit(), de lo contrario es como sugiere Miguel aquí 
abajo, de mejor poner la base en autocommit(). Claro, esto hará que se tarde 
muchísimo, en comparación de aplicar el commit al final.

Por otra parte, no sé si siquiera el commit() esté haciendo algo, porque (está 
usando Mysql correcto?) entonces el 'storage-engine' por omisión es MyISAM y 
éste no tiene transacciones, por lo cual permite pero ignora silenciosamente 
los 'commits'. Para poder usarlo, debería estar la tabla en cuestión almacenada 
con InnoDb, y la base en un modo que sea distinto de autocommit. Entonces sí 
tendría sentido el commit y creo que debería ser al final de los 2 
registros y no con cada uno, salvo un requerimiento muy especial que no 
conocemos.

Otra posibilidad es que está usando PyMysql, que es un módulo relativamente 
nuevo. No convendría probar con Mysqldb, que es ya muy estable y ver si el 
error se repite? Igual hay que reportar un problema.

saludos
Gerardo

miguel zamora m. wrote:
 debes de usar el metodo refresh para los datos si la base se bloquea no 
 podras insertar nada
 ademas usa algo asi
 self.con.autocommit(True)
 
 
 
 El 21 de febrero de 2011 09:40, Spectrum Cuarenta y ocho k s_...@yahoo.com 
 mailto:s_...@yahoo.com escribió:
 
     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
     2). 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
     Python-es@python.org mailto:Python-es@python.org
     http://mail.python.org/mailman/listinfo/python-es
     FAQ: http://python-es-faq.wikidot.com/
 
 
 
 
 -- Miguel Zamora M.
 Programador en Computacion e Informatica
 08-1351249
 mzmp...@gmail.com mailto:mzmp...@gmail.com
 Santiago-Chile
 
 
 
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/
   

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/



  ___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


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

2011-02-21 Por tema Eduard Diaz
Hola,

¿Primero de todo puedes enviar la cadena mesaje del fallo:  + str(errr)
para ver que tipo de excepción devuelve?, ¿es siempre el mismo?

Normalmente la clausula finally se utiliza para liberar recursos
independientemente de si se ha producido o no una excepción, por lo que no
es recomendable hacer el commit en ella.

Quizas sea mejor hacer una secuencia tipo: try, excerpt, else (con el
commit) y finally (para cerrar el cursor si lo creas dentro de la función)
sobretodo con tantas inserciones.

Un saludo

El 21 de febrero de 2011 19:45, Spectrum Cuarenta y ocho k
s_...@yahoo.comescribió:

 Hola Gerardo.
 Si uso MySql. Había puesto el commit por cada registro para que si había
 algún fallo, por lo menos, tener guardado lo que iba pasando a la base de
 datos y no perderlo todo. Pero apunto el tema de ponerlo al final, para que
 haga todos los registros a la vez y mejorar el rendimiento.

 En cuanto al módulo Mysqldb, me pareció entender que no había para python
 3, por eso usé PyMySQL. Y como bien dices, es posible que sea un fallo del
 módulo.

 Gracias y un saludo.


 --- On *Mon, 2/21/11, gerardo Juarez gerardojua...@buyteknet.info*wrote:


 From: gerardo Juarez gerardojua...@buyteknet.info
 Subject: Re: [Python-es] 'int' does not support the buffer interface
 To: La lista de python en castellano python-es@python.org
 Date: Monday, February 21, 2011, 6:17 PM


 No me había fijado que el commit lo hace por cada registro. Por  lo que nos
 describe, la tarea que se ejecuta para procesar unos 2 registros parece
 ser una tarea 'batch'. Como tal, sería mejor tal vez procesar todos los
 registros y hasta el final aplicar el commit(), de lo contrario es como
 sugiere Miguel aquí abajo, de mejor poner la base en autocommit(). Claro,
 esto hará que se tarde muchísimo, en comparación de aplicar el commit al
 final.

 Por otra parte, no sé si siquiera el commit() esté haciendo algo, porque
 (está usando Mysql correcto?) entonces el 'storage-engine' por omisión es
 MyISAM y éste no tiene transacciones, por lo cual permite pero ignora
 silenciosamente los 'commits'. Para poder usarlo, debería estar la tabla en
 cuestión almacenada con InnoDb, y la base en un modo que sea distinto de
 autocommit. Entonces sí tendría sentido el commit y creo que debería ser al
 final de los 2 registros y no con cada uno, salvo un requerimiento muy
 especial que no conocemos.

 Otra posibilidad es que está usando PyMysql, que es un módulo relativamente
 nuevo. No convendría probar con Mysqldb, que es ya muy estable y ver si el
 error se repite? Igual hay que reportar un problema.

 saludos
 Gerardo

 miguel zamora m. wrote:
  debes de usar el metodo refresh para los datos si la base se bloquea no
 podras insertar nada
  ademas usa algo asi
  self.con.autocommit(True)
 
 
 
  El 21 de febrero de 2011 09:40, Spectrum Cuarenta y ocho k 
 s_...@yahoo.com http://mc/compose?to=s_...@yahoo.com mailto:
 s_...@yahoo.com http://mc/compose?to=s_...@yahoo.com escribió:
 
  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
  2). 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
  Python-es@python.org http://mc/compose?to=Python-es@python.orgmailto:
 Python-es@python.org http://mc/compose?to=Python-es@python.org
  http://mail.python.org/mailman/listinfo/python-es
  FAQ: http://python-es-faq.wikidot.com/
 
 
 
 
  -- Miguel Zamora M.
  Programador en Computacion e Informatica
  08-1351249
  mzmp...@gmail.com http://mc/compose?to=mzmp...@gmail.com mailto:
 mzmp...@gmail.com http://mc/compose?to=mzmp...@gmail.com
  Santiago-Chile
 
  

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

2011-02-21 Por tema xiscu

Porqué no pruebas con (sólo para obtener el Traceback) :

curs = None
try:
 curs = conn.cursor()
 if curs:
 curs.execute(query)
 curs.close()
 conn.commit()
 print(OK!)
else:
class SinCursorException(BaseException):
pass
raise SinCursorException
except Exception as errr:
   print(mesaje del fallo:  + str(errr))
   print(Fallo en:  + query)
   raise

si te miras en:

http://code.google.com/p/pymysql/source/browse/trunk/pymysql/err.py

son los errors que te podria dar ...

La verdad es que falta un poco de contexto y sus razones abrá
pero con algo mas o menos ...

def insertar(miConn, autor, texto):
query = INSERT INTO famous_quote (...)
curs = miConn.cursor()
...

... te permitiria testear EMHO algo mejor el codigo de la funcion en 
seco ...


Suerte


On 02/21/2011 07:45 PM, Spectrum Cuarenta y ocho k wrote:

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
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


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

2011-02-21 Por tema Spectrum Cuarenta y ocho k
Hola, el mensaje de error es el que figura en el título de email:

'int' does not support the buffer interface

Fíjate que tengo un if(cur) dentro del finally de esa forma solo se ejecuta 
cuando es necesario.

Un saludo.

--- On Mon, 2/21/11, Eduard Diaz eventgra...@gmail.com wrote:

From: Eduard Diaz eventgra...@gmail.com
Subject: Re: [Python-es] 'int' does not support the buffer interface
To: La lista de python en castellano python-es@python.org
Date: Monday, February 21, 2011, 7:31 PM

Hola,

¿Primero de todo puedes enviar la cadena mesaje del fallo:  + str(errr) para 
ver que tipo de excepción devuelve?, ¿es siempre el mismo?

Normalmente la clausula finally se utiliza para liberar recursos 
independientemente de si se ha producido o no una excepción, por lo que no es 
recomendable hacer el commit en ella. 


Quizas sea mejor hacer una secuencia tipo: try, excerpt, else (con el commit) y 
finally (para cerrar el cursor si lo creas dentro de la función) sobretodo con 
tantas inserciones.

Un saludo


El 21 de febrero de 2011 19:45, Spectrum Cuarenta y ocho k s_...@yahoo.com 
escribió:


Hola Gerardo. 
Si uso MySql. Había puesto el commit por cada registro para que si había algún 
fallo, por lo menos, tener guardado lo que iba pasando a la base de datos y no 
perderlo todo. Pero apunto el tema de ponerlo al final, para que haga todos los 
registros a la vez y mejorar el rendimiento.



En cuanto al módulo Mysqldb, me pareció entender que no había para python 3, 
por eso usé PyMySQL. Y como bien dices, es posible que sea un fallo del módulo.

Gracias y un saludo.

--- On Mon, 2/21/11, gerardo Juarez gerardojua...@buyteknet.info wrote:



From: gerardo Juarez gerardojua...@buyteknet.info


Subject: Re: [Python-es] 'int' does not support the buffer interface
To: La lista de python en
 castellano python-es@python.org
Date: Monday, February 21, 2011, 6:17 PM

No me había fijado que el commit lo hace por cada registro. Por  lo que nos 
describe, la tarea que se ejecuta para procesar unos 2 registros parece ser 
una tarea 'batch'. Como tal, sería mejor tal vez procesar todos los registros y 
hasta el final aplicar el commit(), de lo contrario es como sugiere Miguel aquí 
abajo, de mejor poner la base en autocommit(). Claro, esto hará que se tarde 
muchísimo, en comparación de aplicar el commit al final.



Por otra parte, no sé si siquiera el commit() esté haciendo algo, porque (está 
usando Mysql correcto?) entonces el 'storage-engine' por omisión es MyISAM y 
éste no tiene transacciones, por lo cual permite pero ignora silenciosamente 
los 'commits'. Para poder usarlo, debería estar la tabla en cuestión almacenada 
con InnoDb, y la base en un modo que sea distinto de autocommit.
 Entonces sí tendría sentido el commit y creo que debería ser al final de los 
2 registros y no con cada uno, salvo un requerimiento muy especial que no 
conocemos.

Otra posibilidad es que está usando PyMysql, que es un módulo relativamente 
nuevo. No convendría probar con Mysqldb, que es ya muy estable y ver si el 
error se repite? Igual hay que reportar un problema.



saludos
Gerardo

miguel zamora m. wrote:
 debes de usar el metodo refresh para los datos si la base se bloquea no 
 podras insertar nada
 ademas usa algo asi
 self.con.autocommit(True)

 

 
 
 El 21 de febrero de 2011 09:40, Spectrum Cuarenta y ocho k s_...@yahoo.com 
 mailto:s_...@yahoo.com escribió:


 
     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
     2). 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
     Python-es@python.org mailto:Python-es@python.org


     

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

2011-02-21 Por tema Spectrum Cuarenta y ocho k
La excepción está en el título:
'int' does not support the buffer interface

--- On Mon, 2/21/11, marmolro marmo...@gmail.com wrote:

From: marmolro marmo...@gmail.com
Subject: Re: [Python-es] 'int' does not support the buffer interface
To: La lista de python en castellano python-es@python.org
Date: Monday, February 21, 2011, 7:51 PM

Buenas!
en el correo

2011/2/21 Spectrum Cuarenta y ocho k s_...@yahoo.com

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 marmo...@gmail.com wrote:


From:
 marmolro marmo...@gmail.com
Subject: Re: [Python-es] 'int' does not support the buffer interface
To: La lista de python en castellano python-es@python.org

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 s_...@yahoo.com


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 2). 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

Python-es@python.org

http://mail.python.org/mailman/listinfo/python-es

FAQ: http://python-es-faq.wikidot.com/





-Inline Attachment Follows-

___
Python-es mailing list
Python-es@python.org

http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/




  
___

Python-es mailing list

Python-es@python.org

http://mail.python.org/mailman/listinfo/python-es

FAQ: http://python-es-faq.wikidot.com/





-Inline Attachment Follows-

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/



  ___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


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

2011-02-21 Por tema marmolro
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 s_...@yahoo.com

 La excepción está en el título:

 'int' does not support the buffer interface

 --- On *Mon, 2/21/11, marmolro marmo...@gmail.com* wrote:


 From: marmolro marmo...@gmail.com
 Subject: Re: [Python-es] 'int' does not support the buffer interface
 To: La lista de python en castellano python-es@python.org
 Date: Monday, February 21, 2011, 7:51 PM


 Buenas!

 en el correo

 2011/2/21 Spectrum Cuarenta y ocho k 
 s_...@yahoo.comhttp://mc/compose?to=s_...@yahoo.com
 

 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 
 marmo...@gmail.comhttp://mc/compose?to=marmo...@gmail.com
 * wrote:


 From: marmolro marmo...@gmail.comhttp://mc/compose?to=marmo...@gmail.com
 

 Subject: Re: [Python-es] 'int' does not support the buffer interface
 To: La lista de python en castellano 
 python-es@python.orghttp://mc/compose?to=python-es@python.org
 
 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 
 s_...@yahoo.comhttp://mc/compose?to=s_...@yahoo.com
 

 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 2). 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
 Python-es@python.org http://mc/compose?to=Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/



 -Inline Attachment Follows-


 ___
 Python-es mailing list
 Python-es@python.org http://mc/compose?to=Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/



 ___
 Python-es mailing list
 Python-es@python.org 

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

2011-02-21 Por tema Spectrum Cuarenta y ocho k
Este es el traceback:

Traceback (most recent call last):
  File C:\Users\marcelo\Desktop\prueba_archivos.py, line 53, in module
    leeQuote(n_archivo_, principio_, final_, principio_t, final_t)
  File C:\Users\marcelo\Desktop\prueba_archivos.py, line 46, in leeQuote
    insertar(autor, cita)
  File C:\Users\marcelo\Desktop\prueba_archivos.py, line 18, in insertar
    curs.execute(query)
  File C:\Python31\pymysql\cursors.py, line 108, in execute
    self.errorhandler(self, exc, value)
  File C:\Python31\pymysql\connections.py, line 182, in defaulterrorhandler
    raise Error(errorclass, errorvalue)
pymysql.err.Error: (class 'TypeError', TypeError('int' does not support the 
buffer interface,))

Un saludo.

--- On Mon, 2/21/11, marmolro marmo...@gmail.com wrote:

From: marmolro marmo...@gmail.com
Subject: Re: [Python-es] 'int' does not support the buffer interface
To: La lista de python en castellano python-es@python.org
Date: Monday, February 21, 2011, 8:07 PM

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 s_...@yahoo.com

La excepción está en el título:

'int' does not support the buffer interface

--- On Mon, 2/21/11, marmolro marmo...@gmail.com wrote:


From: marmolro marmo...@gmail.com
Subject: Re: [Python-es] 'int' does not support the buffer interface
To: La lista de python en castellano python-es@python.org

Date: Monday, February 21, 2011, 7:51 PM

Buenas!
en el correo

2011/2/21 Spectrum Cuarenta y ocho k s_...@yahoo.com


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 marmo...@gmail.com wrote:



From:
 marmolro marmo...@gmail.com
Subject: Re: [Python-es] 'int' does not support the buffer interface
To: La lista de python en castellano python-es@python.org


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 s_...@yahoo.com



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 2). 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:
   
 

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

2011-02-21 Por tema marmolro
Apostaría que el error está en alguna c-api, pero no sabría decirte más
puedes probar con http://code.google.com/p/pymysql/issues/list.

De todas formas intenta lo que te ha comentado la gente: reutiliza el cursor
y haz commit cada n registros insertados. Igual al no requerir tanto del
commit no caes en ese bug

Un saludo,
marmolro

2011/2/21 Spectrum Cuarenta y ocho k s_...@yahoo.com

 Este es el traceback:

 Traceback (most recent call last):
   File C:\Users\marcelo\Desktop\prueba_archivos.py, line 53, in module
 leeQuote(n_archivo_, principio_, final_, principio_t, final_t)
   File C:\Users\marcelo\Desktop\prueba_archivos.py, line 46, in leeQuote
 insertar(autor, cita)
   File C:\Users\marcelo\Desktop\prueba_archivos.py, line 18, in insertar
 curs.execute(query)
   File C:\Python31\pymysql\cursors.py, line 108, in execute
 self.errorhandler(self, exc, value)
   File C:\Python31\pymysql\connections.py, line 182, in
 defaulterrorhandler
 raise Error(errorclass, errorvalue)
 pymysql.err.Error: (class 'TypeError', TypeError('int' does not support
 the buffer interface,))

 Un saludo.


 --- On *Mon, 2/21/11, marmolro marmo...@gmail.com* wrote:


 From: marmolro marmo...@gmail.com
 Subject: Re: [Python-es] 'int' does not support the buffer interface
 To: La lista de python en castellano python-es@python.org
 Date: Monday, February 21, 2011, 8:07 PM


 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 
 s_...@yahoo.comhttp://mc/compose?to=s_...@yahoo.com
 

 La excepción está en el título:

 'int' does not support the buffer interface

 --- On *Mon, 2/21/11, marmolro 
 marmo...@gmail.comhttp://mc/compose?to=marmo...@gmail.com
 * wrote:


 From: marmolro marmo...@gmail.comhttp://mc/compose?to=marmo...@gmail.com
 
 Subject: Re: [Python-es] 'int' does not support the buffer interface
 To: La lista de python en castellano 
 python-es@python.orghttp://mc/compose?to=python-es@python.org
 
 Date: Monday, February 21, 2011, 7:51 PM


 Buenas!

 en el correo

 2011/2/21 Spectrum Cuarenta y ocho k 
 s_...@yahoo.comhttp://mc/compose?to=s_...@yahoo.com
 

 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 
 marmo...@gmail.comhttp://mc/compose?to=marmo...@gmail.com
 * wrote:


 From: marmolro marmo...@gmail.comhttp://mc/compose?to=marmo...@gmail.com
 

 Subject: Re: [Python-es] 'int' does not support the buffer interface
 To: La lista de python en castellano 
 python-es@python.orghttp://mc/compose?to=python-es@python.org
 
 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 
 s_...@yahoo.comhttp://mc/compose?to=s_...@yahoo.com
 

 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 2). El caso, es que
 funciona bastante bien, pero cuando llevo 3 o 4 partes, sigue funcionando...
 pero se salta el try. 

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

2011-02-21 Por tema miguel zamora m.
def insertar(autor, texto):

try:
query = INSERT INTO famous_quote (text, author) VALUES (\%s\,
\%s\) % (texto, autor)
curs = conn.cursor()
curs.execute(query)

if(curs):
conn.autocommit(true)
curs.close()
print(OK!)

except Exception as errr:

print(mesaje del fallo:  + str(errr))
print(Fallo en:  + query)
# guarda esto en un log
pass  #  --- esto no lo haria ya que no sabria donde se
cayo


no es mucho lo que describes de tu programa ¿pertenece a una clase ?

Creo que la solucion es trabajar en base a test para python tienes muchas
posibilidades de
crear aplicaciones robustas y controlando los errores y dejando un minimo
margen para bugs
o mantenciones es parte de una buena practica de programacion y te aseguro
que todo
funcionara excelente

yo por mi parte trabajo en python 2.7 en ubuntu

busca si la libreria que usas tiene bugs




El 21 de febrero de 2011 17:57, Spectrum Cuarenta y ocho k
s_...@yahoo.comescribió:

 Gracias.

 --- On *Mon, 2/21/11, marmolro marmo...@gmail.com* wrote:


 From: marmolro marmo...@gmail.com
 Subject: Re: [Python-es] 'int' does not support the buffer interface
 To: La lista de python en castellano python-es@python.org
 Date: Monday, February 21, 2011, 8:44 PM


 Apostaría que el error está en alguna c-api, pero no sabría decirte más
 puedes probar con http://code.google.com/p/pymysql/issues/list.

 De todas formas intenta lo que te ha comentado la gente: reutiliza el
 cursor y haz commit cada n registros insertados. Igual al no requerir tanto
 del commit no caes en ese bug

 Un saludo,
 marmolro

 2011/2/21 Spectrum Cuarenta y ocho k 
 s_...@yahoo.comhttp://mc/compose?to=s_...@yahoo.com
 

 Este es el traceback:

 Traceback (most recent call last):
   File C:\Users\marcelo\Desktop\prueba_archivos.py, line 53, in module
 leeQuote(n_archivo_, principio_, final_, principio_t, final_t)
   File C:\Users\marcelo\Desktop\prueba_archivos.py, line 46, in leeQuote
 insertar(autor, cita)
   File C:\Users\marcelo\Desktop\prueba_archivos.py, line 18, in insertar
 curs.execute(query)
   File C:\Python31\pymysql\cursors.py, line 108, in execute
 self.errorhandler(self, exc, value)
   File C:\Python31\pymysql\connections.py, line 182, in
 defaulterrorhandler
 raise Error(errorclass, errorvalue)
 pymysql.err.Error: (class 'TypeError', TypeError('int' does not support
 the buffer interface,))

 Un saludo.


 --- On *Mon, 2/21/11, marmolro 
 marmo...@gmail.comhttp://mc/compose?to=marmo...@gmail.com
 * wrote:


 From: marmolro marmo...@gmail.comhttp://mc/compose?to=marmo...@gmail.com
 
 Subject: Re: [Python-es] 'int' does not support the buffer interface
 To: La lista de python en castellano 
 python-es@python.orghttp://mc/compose?to=python-es@python.org
 
 Date: Monday, February 21, 2011, 8:07 PM


 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 
 s_...@yahoo.comhttp://mc/compose?to=s_...@yahoo.com
 

 La excepción está en el título:

 'int' does not support the buffer interface

 --- On *Mon, 2/21/11, marmolro 
 marmo...@gmail.comhttp://mc/compose?to=marmo...@gmail.com
 * wrote:


 From: marmolro marmo...@gmail.comhttp://mc/compose?to=marmo...@gmail.com
 
 Subject: Re: [Python-es] 'int' does not support the buffer interface
 To: La lista de python en castellano 
 python-es@python.orghttp://mc/compose?to=python-es@python.org
 
 Date: Monday, February 21, 2011, 7:51 PM


 Buenas!

 en el correo

 2011/2/21 Spectrum Cuarenta y ocho k 
 s_...@yahoo.comhttp://mc/compose?to=s_...@yahoo.com
 

 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

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

2011-02-21 Por tema Chema Cortes
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Para dar con el problema necesitaríamos realizar más pruebas y ver algo
más de código.

En una epifanía, se me ocurre que igual tienes algún problema con la
codificación de caracteres. ¿Cómo has creado las tablas? ¿cómo creas la
conexión? ¿cómo procesas las cadenas antes de enviarlas a mysql?

PyMysql usa por defecto latin1 para conectarse, mientras que el servidor
mysql5 espera unicode (ucs2/utf8) por defecto. Si no te has preocupado
por ello, es posible que las conversiones y reconversiones que se estén
produciendo saquen de madre a alguno de los accesos a rawbytes de pymysql.

Comprueba que tablas y conexión estén usando la misma codificación.
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJNYw2QAAoJEFdWyBWwhL4FMQEIAJfDvUtTJmtQ+NYeg2maCqDI
3Msjo5xuKL/DcJWAfNPKdNKh8fA3KQY4jIgut/uJMTWXTLHl5vonYxpx+pd1d9gA
i/P4lwW8aFgYsz7Cs7YXep5BMyj9i46FQ9PNqrS2cV4TfEckJ8GIZO+0hEy5Jbd9
J3nRdlcWitQH+Xq8HWr+PiXr36ROzo5cfnu54c1WctKFYWny9dXaGjJm+ovIbHeB
UxwbkL/JQsokSsNVjtqHILk7oiq57ORcIV8WzXmqBThVvoiP/0h0E1SnjFsTX3xr
t897CeUdqBS1FfxAB6bNkohQRexgvGJCDmKZjAwSHOr3IemdIX2RSV6kFkuPpcw=
=trDz
-END PGP SIGNATURE-
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/