Hello, I'm trying to debug some model functions by setting up a script to use an environment similar to "manage.py shell". I can get a single item from the model from the command line, but when I use the script I get a StopIteration exception. More generally, I'm very new to django and pretty new to python and would like advice on how to configure environment and what to put in scripts in order to be able to write scripts to do things like unit-testing my django code and populating databases from external sources, and run those scripts in a debugger e.g. Wing. I've searched the wiki and django-users archives and django documentation and didn't find much beyond what's shown below - but that may be poor search skills. Pointers appreciated. Many thanks in advance.
Details on the exception -- Getting one item works from the command line: ---------------------------------------------- $ python manage.py shell Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel) on win32] Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole)
import inputs.models oi015 = inputs.models.OI.objects.get(id=15) oi015
<OI: oi015> But getting one item from the script fails (ran this from Wing): ---------------------------------------------------------------- from django.core.management import setup_environ import settings setup_environ(settings) import inputs.models oi015=inputs.models.OI.objects.get(id=15) StopIteration: Traceback (innermost last): File "C:\Documents and Settings\Administrator\Desktop\trunk\input\ngats_input\models_tests.py", line 1, in <module> 'test script for indirect_grid' File "C:\Documents and Settings\Administrator\Desktop\trunk\input\ngats_input\models_tests.py", line 9, in <module> oi015=inputs.models.OI.objects.get(id=15) File "C:\cygwin\home\Dan\src\django_src\django\db\models\manager.py", line 67, in get return self.get_query_set().get(*args, **kwargs) File "C:\cygwin\home\Dan\src\django_src\django\db\models\query.py", line 211, in get obj_list = list(clone) File "C:\cygwin\home\Dan\src\django_src\django\db\models\query.py", line 103, in __iter__ return iter(self._get_data()) File "C:\cygwin\home\Dan\src\django_src\django\db\models\query.py", line 430, in _get_data self._result_cache = list(self.iterator()) File "C:\cygwin\home\Dan\src\django_src\django\db\models\query.py", line 178, in iterator raise StopIteration The exception occurs in django/db/models/query.py: ----------------------------------------------------- def iterator(self): "Performs the SELECT database lookup of this QuerySet." # self._select is a dictionary, and dictionaries' key order is # undefined, so we convert it to a list of tuples. extra_select = self._select.items() cursor = connection.cursor() select, sql, params = self._get_sql_clause() cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "") + ",".join(select) + sql, params) fill_cache = self._select_related index_end = len(self.model._meta.fields) while 1: rows = cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE) if not rows: raise StopIteration ### <<< HERE for row in rows: if fill_cache: obj, index_end = get_cached_row(self.model, row, 0) else: obj = self.model(*row[:index_end]) for i, k in enumerate(extra_select): setattr(obj, k[0], row[index_end+i]) yield obj --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---