I'm using sqlalchemy 0.8.7 on python 2.7.8. Here is my test case:
#!/usr/bin/env python > > >> from sqlalchemy import Column, ForeignKey > > from sqlalchemy.orm import relationship, backref > > from sqlalchemy.ext.declarative import declarative_base > > from sqlalchemy.dialects.postgresql import * > > >> import uuid > > >> Base = declarative_base() > > >> class parent(Base): > > >> __tablename__ = 'parent' > > >> parent_id = Column("parent_id", UUID(as_uuid=True), >> primary_key=True) > > description = Column("description", VARCHAR) > > >> childRelationship = relationship('child', backref = "parent") > > >> #Base2 = declarative_base() > > >> #class child(Base2): > > class child(Base): > > >> __tablename__ = 'child' > > >> child_id = Column("child_id", UUID(as_uuid=True), >> primary_key=True) > > description = Column("description", VARCHAR) > > parent_id = Column("parent_id", UUID(as_uuid=True), >> ForeignKey(parent)) > > >> >> myP = parent() > > >From the documentation I thought I'd be able to instantiate "myP" at that point. Instead I get this: Traceback (most recent call last): > > File "./testcase.py", line 33, in <module> > > myP = parent() > > File "<string>", line 2, in __init__ > > File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/instrumentation.py", >> line 317, in _new_state_if_none > > File "build/bdist.linux-x86_64/egg/sqlalchemy/util/langhelpers.py", line >> 612, in __get__ > > File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/instrumentation.py", >> line 152, in _state_constructor > > File "build/bdist.linux-x86_64/egg/sqlalchemy/event.py", line 420, in >> __call__ > > File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/mapper.py", line 2262, >> in _event_on_first_init > > File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/mapper.py", line 2171, >> in configure_mappers > > File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/mapper.py", line 1281, >> in _post_configure_properties > > File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/interfaces.py", line >> 231, in init > > File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/properties.py", line >> 1030, in do_init > > File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/properties.py", line >> 1104, in _setup_join_conditions > > File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/relationships.py", >> line 114, in __init__ > > File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/relationships.py", >> line 197, in _determine_joins > > File "build/bdist.linux-x86_64/egg/sqlalchemy/sql/util.py", line 355, in >> join_condition > > File "build/bdist.linux-x86_64/egg/sqlalchemy/schema.py", line 1406, in >> get_referent > > File "build/bdist.linux-x86_64/egg/sqlalchemy/sql/expression.py", line >> 3363, in corresponding_column > > AttributeError: type object 'parent' has no attribute 'proxy_set' > > If I change the child class to use "Base2" instead of "Base" (commented out above), it changes the error: Traceback (most recent call last): File "./testcase.py", line 33, in <module> myP = parent() File "<string>", line 2, in __init__ File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/instrumentation.py", > line 317, in _new_state_if_none File "build/bdist.linux-x86_64/egg/sqlalchemy/util/langhelpers.py", line > 612, in __get__ File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/instrumentation.py", > line 152, in _state_constructor File "build/bdist.linux-x86_64/egg/sqlalchemy/event.py", line 420, in > __call__ File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/mapper.py", line 2262, > in _event_on_first_init File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/mapper.py", line 2171, > in configure_mappers File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/mapper.py", line 1281, > in _post_configure_properties File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/interfaces.py", line > 231, in init File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/properties.py", line > 1029, in do_init File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/properties.py", line > 1084, in _process_dependent_arguments File "build/bdist.linux-x86_64/egg/sqlalchemy/util/langhelpers.py", line > 612, in __get__ File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/properties.py", line > 1003, in mapper File > "build/bdist.linux-x86_64/egg/sqlalchemy/ext/declarative/clsregistry.py", > line 266, in return_cls sqlalchemy.exc.InvalidRequestError: When initializing mapper > Mapper|parent|parent, expression 'child' failed to locate a name ("name > 'child' is not defined"). If this is a class name, consider adding this > relationship() to the <class '__main__.parent'> class after both dependent > classes have been defined. I believe I'm following the documentation here -- http://docs.sqlalchemy.org/en/rel_0_8/orm/relationships.html -- pretty closely in the many-to-one relationship example, but it isn't working. What am I overlooking? -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.