Загрузите существующее табличное отношение многие ко многим с помощью sqlalchemy
-
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 , чтобы просто кодировать всю схему базы данных и избежать задержки отражения.