sqlalchemy类的别名?

时间:2012-07-24 03:50:47

标签: python sqlalchemy

这是我的基类

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'

1 个答案:

答案 0 :(得分:1)

在某种程度上,这取决于您要实现的目标,但从您的示例来看,您尝试执行的操作似乎在SA Docs中称为Single-Table Inheritence。链接页面上列出的示例与您的示例非常相似,Employee == ProductManager == VapourWare(在此插入Dilbert笑话)。