宣言型の継承を持つテーブルがいくつかあり、継承を「レイジー」にしようとしています。つまり、親テーブルに熱心に参加したくないということです。
例えば:
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である場合は、Personオブジェクトを受信できるようにしたいと思います。そのため、PersonにEntityとの関係を持たせたり、Mixinを使用したりすることはできません。