Вот мой случай:
- У меня есть
N
таблицы: table_i
(N
конечно и известно, каждая table_i
имеет свою собственную схему) - У меня есть общая таблица:
common
- Строки из любого
table_i
должны быть связаны со строками common
Чтобы достичь этого, для каждого table_i
,Я создам вторую таблицу link_i
, содержащую два внешних ключа, один для table_i
и один для common
.
Теперь, чтобы создать все эти link_i
таблицы, я хотел бы использоватьдекларативный API SQLAlchemy (как я использую его для других таблиц).
Я не знаю, как получить одну схему (общую таблицу 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 и пользовательские базовые классы но это все равно будет означать создание определенного класса для каждого table_i
(которого я стараюсь избегать).