Таблицы отображения Python sqlalchemy без первичного ключа - PullRequest
0 голосов
/ 07 июля 2019

У меня есть сторонняя база данных, которую я пытаюсь отобразить с помощью sqlalchemy и python. Таблица в базе данных не использует первичный ключ. И мне нравится избегать определений таблиц самостоятельно, потому что в таблице много столбцов. Поэтому я написал следующий код

Найдены следующие аргументы mapper в документации sqlalchemy.

class MyTable(Base):
  __tablename__ = 'MyTable'
  __mapper_args__ = {'primary_key':[some_table_with_no_pk.c.uid, some_table_with_no_pk.c.bar]
.....
}

Но мне неясно, как добавить правильное наименование, что-то вроде

{'primary_key':['MyTable', 'MyColumnInTable'] }
or
{'primary_key':'[MyTable, MyColumnInTable]' }

не работает. Как мне это отобразить? Спасибо за любую помощь

1 Ответ

1 голос
/ 08 июля 2019

Найден правильный синтаксис:

class Channel(Base):

   __tablename__ = 'MyTable'
   __table__ = Table(__tablename__, Base.metadata, autoload=True, autoload_with=Engine)   
   __mapper_args__ = {'primary_key': [__table__.c.MyColumnInTable]} 
... 
}

Это сработало для меня.

Другое решение было бы: Переопределение отраженных столбцов (встречается также в sqlalchemy doku)

Column('MyColumnInTable', Integer, primary_key=True),   # override reflected 'id' to have primary key

Спасибо

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