duda sobre django: al leer una base de datos me devuelve una lista vacia
Jose Caballero
jcaballero.hep en gmail.com
Mie Jul 9 16:38:31 CEST 2008
Efectivamente, parece ser la mejor forma. Pero no deja de sorprenderme que
no sea capaz de manejar un número alto de entradas.
Gracias.
El día 9 de julio de 2008 10:33, Eduardo Matus <ematus en gmail.com> escribió:
> si crees que son muchas, segmenta tus resultados... por ejemplo de a
> 1.000.000 por consulta
>
> 2008/7/9 Jose Caballero <jcaballero.hep en gmail.com>:
>
> > El día 9 de julio de 2008 6:39, Jordi Funollet <jordi.f en ati.es>
> escribió:
> >
> > > Jose Caballero dixit:
> > > > Hola de nuevo.
> > > >
> > > > Este mensaje es para decir que he solucionado el problema, pero ahora
> > > tengo
> > > > otro.
> > > >
> > > > 1) Respecto a mi pregunta anterior, parece que no había entendido la
> > > > documentación. Creí entender que el modelo no podía contener ninguna
> > > clave
> > > > primaria porque django la iba a añadir a posteriori. Supongo que lo
> > > entendí
> > > > mal. He declarado como clave primaria la primera variable del modelo
> > > (que,
> > > > por supuesto, corresponde a la clave primaria de la base de datos), y
> > > ahora
> > > > me devuelve información cuando leo la DB en lugar de una lista vacía.
> > > >
> > > > 2) Pero sólo me devuelve información si hago algo como
> > > >
> > > > l = MyTable.objects.all()[0:5]
> > > >
> > > > si lo que intento es leer todas las entradas...
> > > >
> > > > l = MyTable.objects.all()
> > > >
> > > > obtengo una lista vacía como resultado.
> > > > La DB que estoy leyendo es enorme. ¿Existe algún límite? No sé si,
> > cuando
> > > > intento leer demasiadas entradas, django no es capaz de manejar el
> > > > resultado y da una lista vacía como output. ¿Alguien sabe si la cosa
> va
> > > por
> > > > ahí?
> > >
> > > Estrictamente, ni idea. :-) Django hace "lazy evaluation" de casi todo;
> > > puede
> > > tener relación. ¿Pero seguro que necesitas recuperar toda la lista?
> > Puedes
> > > iterar-la?
> > >
> > > for elem in MyTable.objects.all():
> > > print elem
> > >
> >
> >
> >
> >
> > No. No funciona. Me da el mismo error. Creo que son demasiadas entradas
> en
> > la DB (aproximadamente 5 millones por tabla). Parece que tengo que buscar
> > otra estrategia...
> >
> > Traceback (most recent call last):
> > File "<console>", line 1, in ?
> > File
> >
> >
> "/usatlas/u/caballer/bin/applications/django-trunk/django/db/models/query.py",
> > line 78, in _result_iter
> > self._fill_cache()
> > File
> >
> >
> "/usatlas/u/caballer/bin/applications/django-trunk/django/db/models/query.py",
> > line 494, in _fill_cache
> > self._result_cache.append(self._iter.next())
> > File
> >
> >
> "/usatlas/u/caballer/bin/applications/django-trunk/django/db/models/query.py",
> > line 162, in iterator
> > for row in self.query.results_iter():
> > File
> >
> >
> "/usatlas/u/caballer/bin/applications/django-trunk/django/db/models/sql/query.py",
> > line 200, in results_iter
> > for rows in self.execute_sql(MULTI):
> > File
> >
> >
> "/usatlas/u/caballer/bin/applications/django-trunk/django/db/models/sql/query.py",
> > line 1474, in execute_sql
> > cursor.execute(sql, params)
> > File
> >
> >
> "/usatlas/u/caballer/bin/applications/django-trunk/django/db/backends/util.py",
> > line 18, in execute
> > return self.cursor.execute(sql, params)
> > File "/usr/lib/python2.3/site-packages/MySQLdb/cursors.py", line 166, in
> > execute
> > self.errorhandler(self, exc, value)
> > File "/usr/lib/python2.3/site-packages/MySQLdb/connections.py", line 35,
> > in defaulterrorhandler
> > raise errorclass, errorvalue
> > MemoryError
> > _______________________________________________
> > Lista de correo Python-es
> > http://listas.aditel.org/listinfo/python-es
> > FAQ: http://listas.aditel.org/faqpyes
> >
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>
_______________________________________________
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