i committed it to 0.7.

technically the logic there should search up the chain of mappers for an FK in 
a parent table, its still making a bit of an assumption.


On Jun 16, 2011, at 1:24 PM, JPLaverdure wrote:

> 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.
> 

-- 
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