【发布时间】:2012-10-19 20:27:49
【问题描述】:
我们有一些表在它们之间具有声明性继承,我们一直在尝试使继承“惰性”,这意味着我们不想急切地在父表上加入。
例如:
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'}
查询 Person 时,sqlalchemy 总是在 Entity 上加入。我希望它有点懒惰,但我找不到任何方法。
但是,在查询实体时,如果该实体是人,我仍然希望能够接收人对象。 这就是为什么我们不能简单地让 Person 与 Entity 有关系,或者使用一个有关系的 Mixin。
【问题讨论】:
标签: python orm sqlalchemy lazy-evaluation declarative