Загрузите существующее табличное отношение многие ко многим с помощью sqlalchemy - PullRequest
1 голос
/ 16 сентября 2009

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

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

1 Ответ

1 голос
/ 16 сентября 2009

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

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

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

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