Python - Consulta SQLite falla... a veces

   
Vista:

Consulta SQLite falla... a veces

Publicado por epicteto (43 intervenciones) el 06/05/2014 11:20:48
Buenos días

Tengo un programa en Python que entre otras cosas realiza consultas a una BBDD SQLite. Trabajo en Debian Linux

No suelo tener ningún problema, salvo que en ocasiones tarda mucho en mostrarme los resultados de algunos registros (unos 8-9 segundos) pero sólo tarda a veces, otras el resultado es prácticamente instantáneo,incluso para hacer la misma consulta y obtener los mismos resultados.

¿Cómo puede ser que sólo ocurra algo "a veces" para hacer la misma cosa?

¿Cómo puedo saber dónde está el problema para poder solucionarlo, dado que sólo ocurre algunas veces?

Este sería un ejemplo de una consulta que a veces tarda mucho, y otras no

1
2
3
4
5
6
7
8
iddenombre  = ('pepe',  )
import sqlite3
con = sqlite3.connect('/home/.../bbdd.db3')
cursor = con.cursor()
cursor.execute("SELECT id FROM Clientes WHERE name =?",  iddenombre)
for id in cursor:
    resultadodelaconsulta = id[0]
con.close()

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Consulta SQLite falla... a veces

Publicado por xve (1235 intervenciones) el 06/05/2014 15:21:10
Hola, la verdad es que solo se me ocurre, que esas veces que va mas lento de lo normal, es porque el disco duro o el procesador están ocupados realizando otros procesos, que hacen que se ralenticen las consultas.

Podría ser por esta razón? sobre que sistema operativo se esta ejecutando el sqlite?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta SQLite falla... a veces

Publicado por epicteto (43 intervenciones) el 06/05/2014 15:40:53
Gracias por tu respuesta

Como dije en mi primer mensaje trabajo en Debian Linux y yo también pensé que la razón del retardo ocasional podría ser esa ... pero he comprobado que no es así.

Quizás es una imaginación mía, pero a veces parece que cuando el programa se conecta por primera vez tarda más en hacerlo que siguientes, hasta que más adelante vuelve a ocurrir.

Tengo por costumbre cerrar la conexión con la BBDD cuando tengo el resultado de la consulta [ con.close() ]. No sé si podría ser de ayuda no hacerlo hasta que termine de ejecutarse el programa completo

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Consulta SQLite falla... a veces

Publicado por xve (1235 intervenciones) el 06/05/2014 20:20:51
Mil perdones, no me di cuenta que ya ponías que trabajabas con Debian...

Una prueba seria intentar mantener la conexión, aunque yo he utilizado en varias ocasiones sqlite, tanto con python como con php, y no recuerdo que hubiera ningún cambio en la velocidad de las consultas... voy a ver si recupero el código de python y te lo muestro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta SQLite falla... a veces

Publicado por epicteto (43 intervenciones) el 12/05/2014 19:40:23
Había pensado mantener la conexión abierta; lo que pasa es que durante la ejecución del programa yo hago consultas, pero a su vez la BBDD también se va rellenando con registros nuevos, y no sé si al mantener la conexión abierta por mi parte puedo dar lugar a dos problemas: que no se carguen en la BBDD los datos nuevos o que yo no sea capaz de leerlos, por eso cada vez que hago una consulta abro y cierro la conexión.

Pero en fin, como no se me ocurre otra solución lo probaré ..

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Consulta SQLite falla... a veces

Publicado por xve (1235 intervenciones) el 12/05/2014 20:19:39
Si únicamente tu utilizas la base de datos, no tienes que tener ningún problema, pero si sois mas de una aplicación utilizando la misma base de datos sqlite, te recomiendo encarecidamente cambiar a MySQL o PostgreSQL, ya que tendrás problemas si los dos intentáis modificar un dato, consultar, etc...

Yo una vez tuve el mismo problema, y mi solución fue utilizar MySQL.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar