使用SQLAlchemy ORM的动态FK

使用SQLAlchemy ORM的动态FK,orm,sqlalchemy,foreign-keys,many-to-many,Orm,Sqlalchemy,Foreign Keys,Many To Many,在产品数据表的data\u id字段中,根据产品id的产品表的dataTable\u name字段,存储生物数据、地理数据或物理数据的数据记录id 因此,我需要的是,考虑到dataTable_name字段(bio_数据、geo_数据或phy_数据)中存储的表名,Product_数据中的data_id字段将指向相应的表记录 如何使用sqlAlchemy ORM定义这种关系 我的做法是: t_Product_data = Table( 'Product_data', metadata,

在产品数据表的
data\u id
字段中,根据产品id的产品表的
dataTable\u name
字段,存储生物数据、地理数据或物理数据的数据记录id

因此,我需要的是,考虑到dataTable_name字段(bio_数据、geo_数据或phy_数据)中存储的表名,Product_数据中的
data_id
字段将指向相应的表记录

如何使用sqlAlchemy ORM定义这种关系

我的做法是:

t_Product_data = Table(
    'Product_data', metadata,
    Column('prod_id', ForeignKey(u'Product.prod_id'), primary_key=True, nullable=False),
    Column('data_id', ForeignKey(u'bio_data.bio_id'), primary_key=True, nullable=False),
    schema='public'
)

class Product(Base):
    __tablename__ = 'Product'
    __table_args__ = {u'schema': 'public'}

    dataTable_name = Column(String)
    prod_id = Column(Integer, primary_key=True)

    data = relationship(u'bio_data', secondary=t_Product_data)
但是,这很好,因为您可以看到声明是静态的,并且仅适用于bio_数据示例。 我需要的是将其用于其他数据源(geo_数据和phy_数据),我不知道,可能使用
dataTable_name
字段作为变量,如下所示:

class Product(Base):
    __tablename__ = 'Product'
    __table_args__ = {u'schema': 'public'}

    dataTable_name = Column(String)
    prod_id = Column(Integer, primary_key=True)

    data = relationship(dataTable_name, secondary=t_Product_data)
我应该如何处理Product_数据表中的FK data_id?可以创建一个动态FK,根据字段Product.dataTable\u name的值指向不同的表