Как параметризовать таблицу SQLAlchemy с помощью декларативного API - PullRequest
0 голосов
/ 10 октября 2019

Вот мой случай:

  • У меня есть 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 (которого я стараюсь избегать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...