I don't like to have attributes added to classes on the fly, but the 
back_populates keyword mentioned in your link seem to have solved it. 
 Still don't understand why the relationship worked with George but not 
with Martha.  Thanks a million for your though help Michael.  

On Thursday, April 17, 2014 11:12:17 AM UTC-7, Michael Bayer wrote:
>
> you want to link “relationships” and “source” using a backref, so that the 
> reference is updated both directions without doing a database round trip.
>
> See 
> http://docs.sqlalchemy.org/en/rel_0_9/orm/relationships.html?highlight=backrefs#linking-relationships-with-backref.
>
>
>
> On Apr 17, 2014, at 1:04 PM, Mats Nordgren <mats.n...@gmail.com<javascript:>> 
> wrote:
>
> class Person(Entity):
>     '''A person.'''
>     
>     __tablename__ = 'people'
>     
>     id = Column(Integer, ForeignKey('entities.id'), primary_key=True)
>     
>     first_name = Column(String(50))
>     middle_name = Column(String(50))
>     last_name = Column(String(50))
>     
>     date_of_birth = Column(Date)
>     date_of_death = Column(Date)
>     
>     relationships = relationship('Relationship', 
> foreign_keys='relationships.c.source_id')
>     
>     __mapper_args__ = {
>         'polymorphic_identity': 'person'}
>
> Missed the mapper args part of person.
>
>
> On Thursday, April 17, 2014 10:02:54 AM UTC-7, Mats Nordgren wrote:
>>
>> class Entity(Base):
>>     '''A base for entities.'''
>>     
>>     __tablename__ = 'entities'
>>     
>>     id = Column(Integer, Sequence('entity_id_seq'), primary_key=True)
>>     type = Column(String(50))
>>     
>>     tax_id = Column(String(20))
>>     
>>     memberships = relationship('Membership')
>>     
>>     __mapper_args__ = {
>>         'polymorphic_identity': 'entity',
>>         'polymorphic_on': type}
>>
>> class Person(Entity):
>>     '''A person.'''
>>     
>>     __tablename__ = 'people'
>>     
>>     id = Column(Integer, ForeignKey('entities.id'), primary_key=True)
>>     
>>     first_name = Column(String(50))
>>     middle_name = Column(String(50))
>>     last_name = Column(String(50))
>>     
>>     date_of_birth = Column(Date)
>>     date_of_death = Column(Date)
>>     
>>     relationships = relationship('Relationship', 
>> foreign_keys='relationships.c.source_id')
>>
>> class Relationship(Base):
>>     '''A relationship.'''
>>     
>>     __tablename__ = 'relationships'
>>     
>>     source_id = Column(Integer, ForeignKey('people.id'), 
>> primary_key=True)
>>     target_id = Column(Integer, ForeignKey('people.id'), 
>> primary_key=True)
>>     relationship_type_id = Column(Integer, ForeignKey('
>> relationship_types.id'), primary_key=True)
>>     
>>     from_date = Column(Date)
>>     thru_date = Column(Date)
>>     
>>     notes = Column(Text)
>>     
>>     source = relationship('Person', foreign_keys=source_id)
>>     target = relationship('Person', foreign_keys=target_id)
>>     relationship_type = relationship('RelationshipType', 
>> foreign_keys=relationship_type_id)
>>
>> class RelationshipType(Base):
>>     '''A relationship type.'''
>>     
>>     __tablename__ = 'relationship_types'
>>     
>>     id = Column(Integer, Sequence('relationship_type_id_seq'), 
>> primary_key=True)
>>     
>>     description = Column(String(50))
>>
>>>
>>>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlalchemy+...@googlegroups.com <javascript:>.
> To post to this group, send email to sqlal...@googlegroups.com<javascript:>
> .
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to