import - sqlalchemy mysterious NameError -



import - sqlalchemy mysterious NameError -

the situation

i have pretty involved database , models split multiple files because there loads of them.

foo.py

from ...models.capture_models import captureinstance ...models.access import dbsession ocaptureinstance = dbsession.query(captureinstance).get(icaptureinstance) # error

this gives me nameerror on query. error talks model isn't used @ in foo.py. if import model it's complaining different nameerror. if include models using many from x import * statements executes fine.

my thinking , experiments

as far know behavior shouldn't happen because not referring straight models within other models. i'm using sort of syntax:

foo_id = column(integer,foreignkey('foo_table_name.id')) etc foo = relationship('foo')

also, removing relationships captureinstance doesn't alter error. since error occurs on query, not import, cant see how references undefined stuff have slipped through cracks during class definition.

hmmm...it seems error depends on order classes defined. in capture_models class mappricelistdescription defined straight before captureinstance. if move definition later in file error changes.

again mention, way have defined foreign keys , relationships implies order of model definitions should not matter. why matter now?

the question

why happen? ideas? allow me know if need more info

the traceback

traceback (most recent phone call last): file "/home/sheena/megacatalogue/env/local/lib/python3.2/site-packages/sqlalchemy-0.7.8-py3.2.egg/sqlalchemy/ext/declarative.py", line 1421, in return_cls x = eval(arg, globals(), d) file "<string>", line 1, in <module> nameerror: name 'pricelist' not defined during handling of above exception, exception occurred: traceback (most recent phone call last): file "run_single_instance.py", line 2, in <module> process_pricelist.main() file "/home/sheena/megacatalogue/env/mega/mega/external_proc/process_html_pricelist_sripts/process_pricelist_html.py", line 51, in main config = configurator.run_configuration() file "/home/sheena/megacatalogue/env/mega/mega/external_proc/process_html_pricelist_sripts/configurator.py", line 78, in run_configuration ocaptureinstance = dbsession.query(captureinstance).get(int(icaptureinstance)) file "/home/sheena/megacatalogue/env/local/lib/python3.2/site-packages/sqlalchemy-0.7.8-py3.2.egg/sqlalchemy/orm/scoping.py", line 114, in homecoming getattr(self.registry(), name)(*args, **kwargs) file "/home/sheena/megacatalogue/env/local/lib/python3.2/site-packages/sqlalchemy-0.7.8-py3.2.egg/sqlalchemy/orm/session.py", line 980, in query homecoming self._query_cls(entities, self, **kwargs) file "/home/sheena/megacatalogue/env/local/lib/python3.2/site-packages/sqlalchemy-0.7.8-py3.2.egg/sqlalchemy/orm/query.py", line 108, in __init__ self._set_entities(entities) file "/home/sheena/megacatalogue/env/local/lib/python3.2/site-packages/sqlalchemy-0.7.8-py3.2.egg/sqlalchemy/orm/query.py", line 117, in _set_entities self._setup_aliasizers(self._entities) file "/home/sheena/megacatalogue/env/local/lib/python3.2/site-packages/sqlalchemy-0.7.8-py3.2.egg/sqlalchemy/orm/query.py", line 132, in _setup_aliasizers _entity_info(entity) file "/home/sheena/megacatalogue/env/local/lib/python3.2/site-packages/sqlalchemy-0.7.8-py3.2.egg/sqlalchemy/orm/util.py", line 578, in _entity_info mapperlib.configure_mappers() file "/home/sheena/megacatalogue/env/local/lib/python3.2/site-packages/sqlalchemy-0.7.8-py3.2.egg/sqlalchemy/orm/mapper.py", line 2258, in configure_mappers mapper._post_configure_properties() file "/home/sheena/megacatalogue/env/local/lib/python3.2/site-packages/sqlalchemy-0.7.8-py3.2.egg/sqlalchemy/orm/mapper.py", line 1167, in _post_configure_properties prop.init() file "/home/sheena/megacatalogue/env/local/lib/python3.2/site-packages/sqlalchemy-0.7.8-py3.2.egg/sqlalchemy/orm/interfaces.py", line 128, in init self.do_init() file "/home/sheena/megacatalogue/env/local/lib/python3.2/site-packages/sqlalchemy-0.7.8-py3.2.egg/sqlalchemy/orm/properties.py", line 910, in do_init self._process_dependent_arguments() file "/home/sheena/megacatalogue/env/local/lib/python3.2/site-packages/sqlalchemy-0.7.8-py3.2.egg/sqlalchemy/orm/properties.py", line 998, in _process_dependent_arguments self.target = self.mapper.mapped_table file "/home/sheena/megacatalogue/env/local/lib/python3.2/site-packages/sqlalchemy-0.7.8-py3.2.egg/sqlalchemy/util/langhelpers.py", line 490, in __get__ obj.__dict__[self.__name__] = result = self.fget(obj) file "/home/sheena/megacatalogue/env/local/lib/python3.2/site-packages/sqlalchemy-0.7.8-py3.2.egg/sqlalchemy/orm/properties.py", line 891, in mapper mapper_ = mapper.class_mapper(self.argument(), file "/home/sheena/megacatalogue/env/local/lib/python3.2/site-packages/sqlalchemy-0.7.8-py3.2.egg/sqlalchemy/ext/declarative.py", line 1433, in return_cls (prop.parent, arg, n.args[0], cls) sqlalchemy.exc.invalidrequesterror: when initializing mapper mapper|mappricelistdescription|capture_map_desc_pricelist, look 'pricelist' failed locate name ("name 'pricelist' not defined"). if class name, consider adding relationship() <class 'mega.models.capture_models.mappricelistdescription'> class after both dependent classes have been defined.

import sqlalchemy python-3.2 nameerror

Comments

Popular posts from this blog

web services - java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer -

Accessing MATLAB's unicode strings from C -

javascript - mongodb won't find my schema method in nested container -