Problemas con bsddb3
lasizoillo
lasizoillo en gmail.com
Vie Mar 27 14:28:51 CET 2009
Buenas:
Despues de oir hablar a jcea sobre la BerkeleyDB me ha dado por
mirarla más a fondo. Viendo la documentación parece una base de datos
(no relacional) que te permite controlar todo tipo de detalles
(concurrencia, aislamiento, replicación, durabilidad, ...) para
adaptarse a tu problema concreto.
El problema ha sido empezar a hacer pruebas con ella. He hecho un
pequeño script de ejemplo[1] que me está fallando y no logro ver por
qué. Un ejemplo de uso es el siguiente:
$ python prueba.py insert 2donq10.txt
$ python prueba.py search lugar
Cursor: ug ('ug', '-Fugite,')
Cursor: lu ('lu', '-Malum')
Cursor: ar ('ar', "''Cardenio,")
Cursor: ga ('ga', '"Vengan')
Traceback (most recent call last):
File "prueba.py", line 60, in <module>
for i in c:
File "prueba.py", line 42, in search_words
res.first()
bsddb3.db.DBInvalidArgError: (22, 'Invalid argument -- illegal flag
specified to DBC->get')
Lo que hace la primera llamada es meter en una base de datos la lista
de palabras del quijote (faltaría normalizaciones y demás pero es solo
una prueba de concepto). La segunda llamada buscaría en la base de
datos de ngramas los ngramas de la búsqueda y cruzaría los datos con
los de la base de datos de palabras. En la base de datos de ngramas el
valor es una palabra, osea la clave primaria de la otra base de datos.
Tendriamos, por tanto, un buscador guarrete hecho en 5 minutos.
Realmente tenemos un script para probar la funcionalidad de join de la
berkeleydb con una cantidad interesante de datos.
La cuestión es que no tengo ni idea de por qué falla (me inspire
bastante en el test de join del paquete que si que me funciona) y no
entiendo el mensaje de error que me da. ¿Hay alguna manera de mejorar
el nivel de debug de los errores? ¿Como se puede depurar la cosa para
ver cual es ese flag ilegal?
[1] http://snipt.org/Ool
Un saludo:
Javi
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es