Fantastic ! And so quick to answer ! Thank you very much for your help, works like a charm now. Has this patch been applied in the 0.7 release of sqlalchemy ? (I was working with 0.6.7)
JP On Jun 16, 12:05 pm, Michael Bayer <mike...@zzzcomputing.com> wrote: > apply this patch to history_meta.py > > diff -r 7c65c0cdd3c8 examples/versioning/history_meta.py > --- a/examples/versioning/history_meta.py Tue Jun 14 19:57:21 2011 -0400 > +++ b/examples/versioning/history_meta.py Thu Jun 16 12:04:43 2011 -0400 > @@ -35,7 +35,7 @@ > col.unique = False > > if super_mapper and col_references_table(column, > super_mapper.local_table): > - super_fks.append((col.key, > list(super_history_mapper.base_mapper.local_table.primary_key)[0])) > + super_fks.append((col.key, > list(super_history_mapper.local_table.primary_key)[0])) > > cols.append(col) > > as you can see, the foreign key generation is pulling from the "base" mapper > which isn't the case in a multilevel situation, it needs to pull the FKs from > the immediate super-mapper. > > On Jun 16, 2011, at 11:20 AM, JPLaverdure wrote: > > > > > > > > > Hello, > > > I'm trying to use the versioning recipe describe on the website along > > with a multi-level inheritance model (Joined-Table inheritance) > > > Here are my declarative statements: > > > [code] > > class Sample(Base): > > __metaclass__ = VersionedMeta > > __tablename__ = 'sample' > > __table_args__ = {'schema': 'test'} > > > id = Column(Integer, primary_key=True) > > discriminator = Column('type', String(50)) > > token = Column(String(128), nullable=False) > > source_sample_id = Column(Integer, ForeignKey('test.sample.id')) > > > children = relationship("Sample", backref=backref('source_sample', > > remote_side=id), single_parent=True) > > > __mapper_args__ = {'polymorphic_on': discriminator, > > 'polymorphic_identity':'sample'} > > > def __init__(self, token, source_sample_id=None): > > self.token = token > > self.source_sample_id = source_sample_id > > > class Tissue(Sample): > > __metaclass__ = VersionedMeta > > __tablename__ = 'tissue' > > __mapper_args__ = {'polymorphic_identity': 'tissue'} > > __table_args__ = {'schema': 'test'} > > > id = Column(Integer, ForeignKey('test.sample.id'), > > primary_key=True) > > concentration = Column(String(32)) > > > def __init__(self, token, concentration, source_sample_id=None): > > super(Sample, self).__init__(token, source_sample_id) > > self.concentration = concentration > > > class LeukemicTissue(Tissue): > > __metaclass__ = VersionedMeta > > __tablename__ = 'leukemic_tissue' > > __mapper_args__ = {'polymorphic_identity': 'leukemic_tissue'} > > __table_args__ = {'schema': 'test'} > > > id = Column(Integer, ForeignKey('test.tissue.id'), > > primary_key=True) > > leukemia = Column(String) > > > def __init__(self, token, concentration, leukemia, > > source_sample_id=None): > > super(Tissue, self).__init__(token, concentration, > > source_sample_id) > > self.leukemia = leukemia > > [/code] > > > Whenever I try to "create_all()" I get the following error: > > sqlalchemy.exc.ArgumentError: Can't find any foreign key relationships > > between 'tissue_history' and 'leucegene_tissue_history'. > > > Single level-inheritance works beautifully (ie if I stop at "Tissue" > > and don't declare the "LeukemicTissue") but I really need a multi- > > level inheritance scheme to work.. > > > Can anyone give me any pointers ? > > > Thanks !! > > > -- > > 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 > > athttp://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.