这是我的基类
class Product(Base):
__tablename__ = 'PRODUCT'
__table_args__ = {'quote':False}
...
id = Column(Integer, name='id_prod', primary_key=True)
type = Column(String(100),name='id_typ_prod')
__mapper_args__ = {'polymorphic_on': type}
因此,我们自然会从这个产品中扩展出许多类,例如:电话和电缆,每个都映射到自己的桌子。
class Phone (Product):
__tablename__ = 'PHONE'
...
现在由于某些原因,我想创建一个别名' class,在数据库中没有对应表的类。像这样:
class VapourWare(Product):
...
如果我这样做
class VapourWare(Product):
__tablename__ = 'PRODUCT'
__mapper_args__ = {'polymorphic_identity':'VapourWare'}
似乎有效。但这是正确的还是推荐的方式?我在这里重复__tablename__ = 'PRODUCT'
。
答案 0 :(得分:1)
在某种程度上,这取决于您要实现的目标,但从您的示例来看,您尝试执行的操作似乎在SA Docs中称为Single-Table Inheritence。链接页面上列出的示例与您的示例非常相似,Employee == Product
和Manager == VapourWare
(在此插入Dilbert笑话)。