На данный момент у меня есть следующие таблицы:
|nodes| |types| |persons| |images|
Где |persons|
и |images|
равны |types|
, а |nodes|
имеет |types|
.
Я пытаюсь представить схему базы данных, которую я имею до сих пор, используя декларативный синтаксис SQLAlchemy, чтобы я мог легко запрашивать базу данных из Python. Проблема, однако, заключается в том, что когда я запрашиваю node.types, я получаю общий класс Type
вместо определенного Person
(или любого другого) класса.
Вот что у меня есть:
class Node(Base):
__tablename__ = 'nodes'
__table_args__ = {'autoload': True}
types = relationship("Type")
class Type(Base):
__tablename__ = 'types'
__table_args__ = {'autoload': True}
node_id = Column("node_id", Integer, ForeignKey('nodes.id'))
class Person(Type):
__tablename__ = "persons"
__table_args__ = {'autoload': True}
__mapper_args__ = {'polymorphic_identity': '/people/person'}
id = Column("id", Integer, ForeignKey('types.id'), primary_key=True)
Пример:
session = Session()
print session.query(Node).one().types[0]
... <__main__.Type object at 0x9a4decc>
Как я могу легко получить определенный тип вместо универсального типа?