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ドキュメントでは単一テーブルの継承と呼ばれているようです。リンク先のページにリストされている例は、Employee == ProductManager == VapourWare(ここにディルバートのジョークを挿入)を使用した例と非常によく似ています。

于 2012-08-01T18:20:03.387 に答える