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.

Reply via email to