Я новичок в SQLAlchemy после перехода из Django ORM. Я пытаюсь создать простой шаблон вложенного набора, и я хотел бы выполнить родительский поиск. Что я бы сделал так в Django ORM:
Page.objects.get(slug="currentlevel",parent__slug="secondlevel",parent__parent__slug="firstlevel")
Это будет автоматически запрашивать базу данных для каждого родительского элемента, возвращая соответствующую строку страницы.
В SQLAlchemy лучшее, что я могу придумать, это:
session.query(Page).join(Page.parent, aliased=True).filter_by(slug="child")
Итак, я могу запросить непосредственный родительский элемент, но как я могу продолжить цепочку в одном запросе? Динамически, если возможно (произвольное количество уровней)
Пожалуйста, имейте в виду, что я новичок в SQLAlchemy и пришел из относительно защищенного Django ORM. Я уверен, что в документах SQLAchemy есть информация, но я прочитал ее и не могу ее найти.
Спасибо за вашу помощь.
SELECT * FROM mytable a JOIN mytable b ON a.id=b.id WHERE a.id='boo'
) занимает 0,9 мс. Извлечение одной строки из запроса с двумя самореферентными соединениями занимает около 1,2 мс. Так что это почти то же самое. Также учтите, что вам, вероятно, в любом случае потребуется получить родительские страницы, хотя бы для отображения их заголовков в хлебных крошках или в меню. - person Sergey   schedule 19.03.2014