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