часто, когда у вас есть таблица с самоссылкой, скажем, в дереве, у вас есть атрибут в качестве внешнего ключа, который указывает на первичный ключ таблицы.(как в примере Отношения смежности из документов)
Однако у меня есть естественный ключ, который работает так: "" - это корень
- "a", "b", "c" и т. д. являются потомками ""
- "aa", "ab", "ac" и т. д. являются потомками "a"
- "ba", "bb", "bc" и т. Д. Являются потомками "b"
- "aaa", "aab", "aac" и т. Д. Являются потомками "aa"
Таким образом, для каждого уровня в дереве есть один символ, и дочерние узлы каждого узла - это узлы с одинаковым началом и одним добавленным символом.Это называется «материализованным ключом»
Как бы я это сделал, используя маппер SQLAlchemy без добавления дополнительного атрибута для ссылки на родителя?
Примечание: меня интересует только чтение взаимосвязи, если что-то вроде node.children.append(child)
не работает, это нормально.Кроме того, я застрял на версии 0.4.8, однако, если это невозможно в этой версии, но только в более новой, я мог бы попытаться обновить.
РЕДАКТИРОВАТЬ У меня естьполучил первый ответ в списке рассылки SA .Это работает, но не на основе картографа, как хотелось бы (например, для использования eagerload)