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.

Reply via email to