[Python-es] Error en consulta sqlite

Dani dani en damufo.com
Jue Mayo 14 16:34:32 CEST 2015


Hola Kiko y Alberto:

El problema es que el pysqlite va integrado en el python 2.7

He creado e entorno virtual con virtualenv y la salida del código es la 
misma
sys.version_info(major=2, minor=7, micro=9, releaselevel='final', serial=0)
pySQLite:  2.6.0
SQLite:  3.8.7.1
registros 833
fin

Como el código importaba wx  y usar wx en entornos virtuales en 
complicado, he hecho un código que ejecutase la consulta en la base de 
datos, con los mismos parámetros de conexión.

El código es este:
--------------------------------------------------
import sys
import sqlite3 as sqlite

print sys.version_info
print "pySQLite: ", sqlite.version
print "SQLite: ", sqlite.sqlite_version
path = "basededatos.sqlite"
conexion = sqlite.connect(path)
cursor = conexion.cursor()
cursor.execute("PRAGMA cache_size=200000")
cursor.execute('PRAGMA encoding="UTF-8";')
sql="""SELECT...."""
cursor.execute(sql)
rows = cursor.fetchall()
print "registros", len(rows)
cursor.close()
conexion.close()
print "fin"
----------------------------------------
el resultado ejecutándolo desde el entornovirtual es el mimo:
sys.version_info(major=2, minor=7, micro=9, releaselevel='final', serial=0)
pySQLite:  2.6.0
SQLite:  3.8.7.1
registros 833
fin

---------------
me llama la atención que estando instalado el pysqlite 2.6.3 siga usando 
el 2.6.0, como haría para usar la nueva versión en el entorno virtual?

En todo caso encontré la solución (o el problema), al hacerlo se me 
ocurrió comentar la línea:
cursor.execute("PRAGMA cache_size=200000")

y el recuento pasó a ser: 547 el correcto!!!

Despues descomenté y añadi un cero al cache_size, quedando así:

cursor.execute("PRAGMA cache_size=2000000")
y tambien funciona si quito ceros, por ejemplo
cursor.execute("PRAGMA cache_size=200")
Mis conocimientos no son suficientes como para comprender esto.

En definitiva, me quedo con dos dudas
Una es como hacer para usar una versión distinta del pysqlite de la 
instalada con el python
La otra es este comportamiento del cache_size.

En todo caso, muchisimas gracias por vuestra ayuda.


Dani

On 14/05/15 16:01, Alberto Perez wrote:
> seguro que ya lo probaste, pero igual lo sugiero: reinstala.
> sudo apt-get remove (lo que queres borrar) y luego sudo apt-get 
> install (lo que queres instalar)
>
> 2015-05-14 9:56 GMT-03:00 Kiko <kikocorreoso en gmail.com 
> <mailto:kikocorreoso en gmail.com>>:
>
>
>
>     El 14 de mayo de 2015, 14:42, Dani <dani en damufo.com
>     <mailto:dani en damufo.com>> escribió:
>
>         Hola:
>
>         Gracias por la ayuda
>
>         Si, para el error instalando la versión de pysqlite 2.6.3 era
>         ese el error.
>         Instalé el
>         /sqlite3-dev
>         y ya instaló e pysqlite versión 2.6.3
>
>         El caso es que al ejecutar el código
>         import sqlite3 as sqlite
>         print "pySQLite: ", sqlite.version
>         print "SQLite: ", sqlite.sqlite_version
>
>         sique indicando:
>         pySQLite:  2.6.0
>         SQLite:  3.8.7.1
>
>         incluso borré la carpeta
>         /usr/local/lib/python2.7/dist-packages/pysqlite2
>
>         y sigue usando la misma versión.
>
>         y sigue pasando lo mismo
>
>         alguna idea?
>         /
>
>
>     Pues sin saber muy bien como tienes las cosas montadas en tu equipo.
>
>     Por qué no montas un virtualenv e instalas ahí lo que necesitas
>     para descartar temas de versiones?
>     https://pypi.python.org/pypi/virtualenv
>
>
>         /
>         Gracias
>
>
>
>         /
>
>         Dani
>
>         On 14/05/15 14:31, Kiko wrote:
>>
>>
>>         El 14 de mayo de 2015, 14:13, Dani <dani en damufo.com
>>         <mailto:dani en damufo.com>> escribió:
>>
>>             Hola:
>>
>>             SO debian Jessie
>>             Python 2.7.9
>>             pySQLite:  2.6.0
>>             SQLite:  3.8.7.1
>>
>>             Estoy tratando de ejecutar una consulta que lleva un left
>>             join.
>>             Cuando la realizo desde python aparecen registros de más
>>             el count es 833
>>             Sin embargo si hago la misma consulta desde la consola
>>             con sqlite3 o desde la extensión de firefox sqlitemanager
>>             el resultado es 547 (que es lo correcto).
>>
>>
>>         Qué código python estás usando
>>
>>
>>             Recientemente actualicé de debian wheezy a jessie y me da
>>             que puede ser algo de la versión del pysqlite
>>
>>             Alguien sabe que puede ser?
>>
>>             hay forma de cambiar la versión del pysqlite para ver si
>>             es eso
>>             Traté de actualizar el pysqlite
>>             $ sudo pip install pysqlite
>>
>>             con pero sale el error: error: command
>>             'x86_64-linux-gnu-gcc' failed with exit status 1
>>
>>
>>         Puedes poner el error completo?
>>
>>             Gracias
>>
>>
>>         prueba lo siguiente:
>>         /sudo apt-get install python-dev sqlite3-dev /
>>         (lo digo de cabeza y puede que no sea exactamente así, estoy
>>         en un windows ahora)
>>         /sudo pip install --upgrade pysqlite/
>>
>>
>>
>>         _______________________________________________
>>         Python-es mailing list
>>         Python-es en python.org  <mailto:Python-es en python.org>
>>         https://mail.python.org/mailman/listinfo/python-es
>>         FAQ:http://python-es-faq.wikidot.com/
>
>
>         _______________________________________________
>         Python-es mailing list
>         Python-es en python.org <mailto:Python-es en python.org>
>         https://mail.python.org/mailman/listinfo/python-es
>         FAQ: http://python-es-faq.wikidot.com/
>
>
>
>     _______________________________________________
>     Python-es mailing list
>     Python-es en python.org <mailto:Python-es en python.org>
>     https://mail.python.org/mailman/listinfo/python-es
>     FAQ: http://python-es-faq.wikidot.com/
>
>
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20150514/6a43eea8/attachment.html>


Más información sobre la lista de distribución Python-es