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
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.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...
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()
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
> 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 pe
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 inser
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 rela
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,
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
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
escribió:
> Hola gente, he hecho un programa para insertar registros en una BD. Son
> bastantes,
En otro orden de cosas para optimizar el código yo definiría el cursor fuera
de la función para que no sea definirlo cada vez ... es lo que mas tarda,
haz la prueba
--
*monoBOT*
Visite mi sitio(Visit my site): monobotblog.alvarezalonso.es
___
Python-es
Oído cocina!
--- On Mon, 2/21/11, monoBOT wrote:
From: monoBOT
Subject: Re: [Python-es] 'int' does not support the buffer interface
To: "La lista de python en castellano"
Date: Monday, February 21, 2011, 4:50 PM
En otro orden de cosas para optimizar el código yo definiría el cursor fuera de
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
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
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
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 recomendab
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
rai
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 wrote:
From: Eduard Diaz
Subject: Re: [P
Buenas!
en el correo
2011/2/21 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()
>
> Realmente el cursor se crea con
La excepción está en el título:
'int' does not support the buffer interface
--- On Mon, 2/21/11, marmolro wrote:
From: marmolro
Subject: Re: [Python-es] 'int' does not support the buffer interface
To: "La lista de python en castellano"
Date: Monday, February 21, 2011, 7:51 PM
Buenas!
en el co
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 independenc
No te discuto que el finally se ejecute siempre, lo puse con esa intención. Mi
fallo fue el if(cur) y ya con lo que me pusiste antes me di cuenta que el if
solo se aseguraba de si estaba creado el cursor no de si había ejecutado la
query (que por otra parte si la ha hecho porque está dentro de l
Este es el traceback:
Traceback (most recent call last):
File "C:\Users\marcelo\Desktop\prueba_archivos.py", line 53, in
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
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 n
Gracias.
--- On Mon, 2/21/11, marmolro wrote:
From: marmolro
Subject: Re: [Python-es] 'int' does not support the buffer interface
To: "La lista de python en castellano"
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
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()
-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 procesa
26 matches
Mail list logo