In my model I have:
class Country(BaseExt):
pass
sao.mapper(Country, createSelect(Country_D, Country_T, 'countries_d_id',
['name', 'url']))
Which I can use like this:
for cs in session.query(db.Country).all():
print cs.name, cs.id
But I run into problems when I try to use "Country" in a relation like this:
class Region_D(Base, CreateUpdateMixin):
__tablename__ = u'regions_d'
id = sa.Column(sa.Integer(), sa.Sequence('regions_d_id'),
primary_key=True, nullable=False)
name = sa.Column(sa.String(length=50, convert_unicode=False))
countries_d_id = sa.Column(sa.Integer())
country = sao.relation('Country', backref='region_d',
primaryjoin='Region_D.countries_d_id == Country.id')
I am getting this exception also "Country" is defined before "Region_D":
Traceback (most recent call last):
File "saTest.py", line 41, in <module>
for cs in session.query(db.Country).all():
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.8-py2.5.egg\sqlalchemy\orm\session.py",
line 893, in query
return self._query_cls(entities, self, **kwargs)
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.8-py2.5.egg\sqlalchemy\orm\query.py",
line 92, in __init__
self._set_entities(entities)
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.8-py2.5.egg\sqlalchemy\orm\query.py",
line 101, in _set_entities
self._setup_aliasizers(self._entities)
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.8-py2.5.egg\sqlalchemy\orm\query.py",
line 115, in _setup_aliasizers
mapper, selectable, is_aliased_class = _entity_info(entity)
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.8-py2.5.egg\sqlalchemy\orm\util.py",
line 492, in _entity_info
mapper = class_mapper(entity, compile)
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.8-py2.5.egg\sqlalchemy\orm\util.py",
line 567, in class_mapper
mapper = mapper.compile()
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.8-py2.5.egg\sqlalchemy\orm\mapper.py",
line 687, in compile
mapper._post_configure_properties()
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.8-py2.5.egg\sqlalchemy\orm\mapper.py",
line 716, in _post_configure_properties
prop.init()
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.8-py2.5.egg\sqlalchemy\orm\interfaces.py",
line 408, in init
self.do_init()
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.8-py2.5.egg\sqlalchemy\orm\properties.py",
line 714, in do_init
self._get_target()
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.8-py2.5.egg\sqlalchemy\orm\properties.py",
line 731, in _get_target
self.mapper = mapper.class_mapper(self.argument(), compile=False)
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.8-py2.5.egg\sqlalchemy\ext\declarative.py",
line 624, in return_cls
prop.parent, arg, n.args[0], cls))
sqlalchemy.exc.InvalidRequestError: When compiling mapper
Mapper|Region_D|regions_d, expression 'Country' failed to locate a name
("name 'Country' is not defined"). If this is a class name, consider
adding this relation() to the <class 'model.Region_D'> class after both
dependent classes have been defined.
Am I doing something wrong or is it not possible to use a class/mapper
based on a select in a relation?
Werner
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.