Загрузите существующее табличное отношение многие ко многим с помощью sqlalchemy

StackOverflow https://stackoverflow.com/questions/1430584

  •  07-07-2019
  •  | 
  •  

Вопрос

Я использую SqlAlchemy для взаимодействия с существующей базой данных PostgreSQL.

Мне нужен доступ к данным, организованным в отношениях «многие ко многим». В документации описывается, как создавать отношения, но я не могу найти пример аккуратной загрузки и запроса существующего.

Это было полезно?

Решение

Запрос существующего отношения на самом деле не отличается от создания нового. Вы в значительной степени пишете тот же код, но указываете имена таблиц и столбцов, которые уже есть, и, конечно, вам не понадобится SQLAlchemy для выполнения операторов CREATE TABLE .

См. http://www.sqlalchemy.org/ docs / 05 / mappers.html # многие ко многим . Все, что вам нужно сделать, это указать столбцы внешнего ключа для существующих родительских, дочерних и ассоциативных таблиц, как в примере, и указать autoload = True , чтобы заполнить другие поля в ваших таблицах. Если в вашей таблице ассоциаций хранится дополнительная информация, как они почти всегда делают, вам просто нужно разбить отношение «многие ко многим» на два отношения «многие к одному».

Я изучал SQLAlchemy, работая с MySQL. С этой базой данных мне всегда приходилось указывать отношения внешнего ключа, потому что они не были явными ограничениями базы данных. Возможно, вам повезет, и вы сможете еще больше отразить в своей базе данных, но вы можете предпочесть использовать что-то вроде http : //pypi.python.org/pypi/sqlautocode , чтобы просто кодировать всю схему базы данных и избежать задержки отражения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top