我们有一些表在它们之间具有声明性继承,并且我们一直在尝试使继承“惰性”,这意味着我们不想急切地在父表上加入。
例如:
class Entity(Base):
__tablename__ = 'entities'
id = Column(Integer, primary_key=True)
entity_type = Column(String, nullable=False)
__mapper_args__ = {'polymorphic_on': entity_type, 'polymorphic_identity': 'entities'}
class Person(Entity):
__tablename__ = 'persons'
person_id = Column(None, ForeignKey('entities.id'), primary_key=True)
name = Column(String, nullable=False)
__mapper_args__ = {'polymorphic_identity': 'persons'}
查询人时,sqlalchemy 总是在实体上加入。我希望这有点懒惰,我找不到任何方法来做到这一点。
但是,在查询实体时,如果该实体是个人,我仍然希望能够接收个人对象。这就是为什么我们不能简单地让 Person 与 Entity 有关系,或者使用一个有关系的 Mixin。