On Apr 7, 2013, at 8:27 AM, Alexey Vihorev <viho...@gmail.com> wrote:

> Hi!
>  
> I’ve got this setup:
>  
> cs = "sqlite:///:memory:"
> sa_engine = create_engine(cs)
>  
> Base = declarative_base()
>  
> class Person(Base):
>  
>     __abstract__ = True
>  
>     id = Column(Integer, primary_key=True)
>     name = Column(String(30))
>  
>  
> class Employee(Person):
>  
>     __tablename__ = 'employee'
>     manager_id = Column(Integer, ForeignKey('employee.id'))
>     manager = relationship('Employee', primaryjoin=(manager_id==Person.id), 
> remote_side=Person.id) #many-to-one
>     comment = Column(String(100))
>  
>  
> Base.metadata.drop_all(sa_engine)
> Base.metadata.create_all(sa_engine)
>  
> Session = sessionmaker(bind=sa_engine)
> s = Session()
> e1 = Employee(name='John Smith') #sqlalchemy.exc.CompileError: Cannot compile 
> Column object until it's 'name' is assigned.
>  
> What gives? Thanks!


that Column object assigned to Person.id is not actually associated with any 
Table; a copy of it has been made and associated with the "employee" table.  
This hasn't happened yet when you declare your Employee class, so that 
primaryjoin and remote_side needs to be as a string:

relationship("Employee", primaryjoin="Employee.manager_id==Employee.id", 
remote_side="Employee.id")






>  
>  
>  
> 
> -- 
> 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?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>  
>  

-- 
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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to