如何使用声明性API来参数化SQLAlchemy表

时间:2019-10-10 08:21:52

标签: python sqlalchemy

这是我的情况:

  • 我有N个表:table_iN是有限的并且是已知的,每个table_i都有自己的模式)
  • 我有一个公用表:common
  • 任何table_i的行都应链接到common的行

要实现这一点,我将为每个table_i创建第二个表link_i,其中包含两个外键,一个为table_i,另一个为common

现在,要创建所有这些link_i表,我想使用SQLAlchemy的声明性API(因为我将其用于其他表)。

我不知道如何拥有一个架构(通用的link_i表),可以通过指定与之相关的table_i来重复使用。

基本上是这样的(我知道table_id部分是错误的):

metadata = MetaData()
Base = declarative_base(metadata=metadata)

class GenericLink(Base, table_id):
    __tablename__ = 'link_to_%s' % table_id

    table_i_id = Column('table_i_id', INT, ForeignKey(table_id), nullable=False)
    common_id = Column('common_id', INT, ForeignKey(common.c.id), nullable=False)

我可以使用Mixin and custom base classes,但这仍然意味着为每个table_i创建特定的类(我试图避免这种情况)。

0 个答案:

没有答案