1

这是我的基类

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 VapourWare(Product):
     ...

如果我做

class VapourWare(Product):
    __tablename__ = 'PRODUCT'
    __mapper_args__ = {'polymorphic_identity':'VapourWare'}

它似乎工作。但这是正确的还是推荐的方式?我在__tablename__ = 'PRODUCT'这里重复。

4

1 回答 1

1

在某种程度上,这取决于您要实现的目标,但是从您的示例看来,您要尝试做的事情在 SA Docs 中称为单表继承。链接页面上列出的示例与您的示例非常相似,带有Employee == Productand Manager == VapourWare(在此处插入 Dilbert 笑话)。

于 2012-08-01T18:20:03.387 回答