this is why I hate adding new features, b.c. now i have to support them, though 
concrete with declarative really needed a push.    The abstract concrete bases 
have probably not yet been tested with multiple-level inheritance.  Hard to say 
where things are going wrong without running a test and pdb'ing...if you want 
to help out you can attach a full reproducible test case as a ticket to 
http://www.sqlalchemy.org/trac/newticket , log in as "guest"/"guest".



On Oct 28, 2011, at 12:27 PM, JPLaverdure wrote:

> Hello,
> 
> I started playing with Concrete Table Inheritance this morning and tried to 
> implement a portion of my schema:
> 
> class Mixin(object):
>     __table_args__ = {'schema':'test'}
> 
>     id = Column(Integer, primary_key=True)
> 
> 
> class Node(ConcreteBase, Base, Mixin):
>     __tablename__ = 'node'
>     __mapper_args__ = {'polymorphic_identity':'node', 'concrete':True}
> 
> 
> class Sample(Node, Mixin):
>     __tablename__ = 'sample'
>     __mapper_args__ = {'polymorphic_identity':'sample', 'concrete':True}
> 
> 
> class DNA(Sample, Mixin):
>     __tablename__ = 'dna'
>     __mapper_args__ = {'polymorphic_identity':'dna', 'concrete':True}
>     
>     token = Column(String(128), nullable=False)
>     qty = Column(Integer, nullable=False)
>     comments = Column(String(256))
>     
>     def __init__(self, token, qty, comments=None):
>         self.token = token
>         self.qty = qty
>         self.comments = comments
> 
>     def __repr__(self):
>         return """<Sample(%s, %s, Qty: %s)>""" % (self.id, self.token, 
> self.qty)
> 
> 
> class RNA(Sample, Mixin):
>     __tablename__ = 'rna'
>     __mapper_args__ = {'polymorphic_identity':'rna', 'concrete':True}
>     
>     token = Column(String(128), nullable=False)
>     qty = Column(Integer, nullable=False)
>     comments = Column(String(256))
>     
>     def __init__(self, token, qty, comments=None):
>         self.token = token
>         self.qty = qty
>         self.comments = comments
> 
>     def __repr__(self):
>         return """<RNA(%s, %s, Qty: %s)>""" % (self.id, self.token, self.qty)
> 
> But after inserting some DNA and RNA entities...
> It seems that:
> 
> session.query(Node).all() 
> 
> returns an empty list whereas:
> 
> session.query(Sample).all()
> 
> returns a polymorphic list of RNAs and DNAs...
> Am I missing something ?
> 
> 
> Also:
> If I declare Node as per:
>  
> class Node(AbstractConcreteBase, Base):
>    pass
> 
> Instead of above, I get the following error:
>  assert mapper is mapper.base_mapper
> AssertionError
> 
> In a perfect world, I would have both Node and Sample as abstract classes but 
> I can't seem to get that going..
> 
> Any pointers ?
> Thanks !
> 
> 
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To view this discussion on the web visit 
> https://groups.google.com/d/msg/sqlalchemy/-/xojj7cGtMqcJ.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> To unsubscribe from this group, send email to 
> sqlalchemy+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/sqlalchemy?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to