这是我的情况:
N
个表:table_i
(N
是有限的并且是已知的,每个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
创建特定的类(我试图避免这种情况)。