Я недавно написал в блоге по этому вопросу.
По большей части sqlalchemy не делает ничего, чего не делает SQL; sqlalchemy на самом деле предоставляет только способы генерации sql и превращения результирующих наборов в красивые объекты python.
Если в вашей базе данных есть несколько полезных инструментов для работы с рекуррентными отношениями, такими как конструкции CONNECT BY
или WITH RECURSIVE
, то sqlalchemy можно легко адаптировать для обработки полученных запросов как выбираемых и отображаемых объектов python.
В связанном посте я столкнулся с реализацией частичного порядка чтения-записи в MySQL, который не предлагает помощи уровня SQL для рекурсивных структур данных. Разработанное мною решение создало аналог инструментального атрибута стиля sqlalchemy, который поддерживал инвариант транзитивного замыкания за кулисами.