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.