我们有几张表格,它们之间有一个声明式继承,我们一直试图使继承“懒惰”,这意味着我们不想急于在父表上加入JOIN。SQLAlchemy惰性声明式继承
例如:
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的JOIN的实体上。我希望这是一种懒惰,我找不到任何办法。
但是,当查询实体时,如果该实体是人物,我仍然希望能够接收Person对象。 这就是为什么我们不能简单地让Person与Entity建立关系,或者使用Mixin有一个。
这很有效,但我们得到了与我们想要的完全相反的结果 - 我们希望能够在不查询实体表的情况下获取Person对象。 – wafwaf
回答编辑。 。 。 。 – zzzeek