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