【发布时间】:2019-02-18 10:39:48
【问题描述】:
我是 sqlalchemy-ORM 的新手,我不知道要在我的代码中添加什么以使子表看到父表的属性 + 它自己的属性。
我正在使用 sqlalchemy-ORM 创建一个数据库。我在“设备”表(基类)、“集线器”和“控制器”(子类)之间进行了连接表继承。默认情况下,基类会看到它自己和子类的属性,但如果我想反其道而行之怎么办。我的问题是我的代码中的子类只看到它自己的属性,我希望它同时看到父类和它自己的属性。
class Device(Base):
__tablename__ = "device"
id = Column('id' , Integer , primary_key=True)
name = Column('name' , String)
status = Column('status', Boolean)
room_id = Column(Integer , ForeignKey('room.id'))
type = Column('type' , String)
__mapper_args__ = {'polymorphic_identity':'device', 'polymorphic_on': type
}
class Hub(Device):
__tablename__ = "hub"
id = Column('id' ,Integer , ForeignKey('device.id'), primary_key=True)
__mapper_args__ = {'polymorphic_identity':'hub'
}
class Controller(Device):
__tablename__ = "controller"
id = Column('id' , Integer , ForeignKey('device.id'), primary_key=True)
__mapper_args__ = {'polymorphic_identity':'controller'
}
【问题讨论】:
-
明确一点,控制器和集线器是特定类型的设备,还是控制器和集线器连接不同的设备?
-
它们是设备类型。
-
好的。在下面提供一个可能的解决方案。
标签: python orm sqlalchemy