Python 具有关联对象的同一表上的多对多关系

Python 具有关联对象的同一表上的多对多关系,python,sqlalchemy,Python,Sqlalchemy,相关(对于无关联对象用例): 建立多对多关系很容易。在同一张表上建立多对多关系几乎和上述问题中记录的一样简单 与关联对象建立多对多关系也很容易 我似乎找不到正确的方法来组合关联对象和多对多关系,左侧和右侧是同一个表 因此,从简单、天真、明显错误的版本开始,我一直在尝试将其转化为正确的版本: 映射此关系的正确方法是什么?我猜您会遇到一个错误,例如无法确定父/子表之间的联接条件… 在这种情况下,将Group\u的映射器更改为\u Group,如下所示: mapper(Group_To_Group,

相关(对于无关联对象用例):

建立多对多关系很容易。在同一张表上建立多对多关系几乎和上述问题中记录的一样简单

与关联对象建立多对多关系也很容易

我似乎找不到正确的方法来组合关联对象和多对多关系,左侧和右侧是同一个表

因此,从简单、天真、明显错误的版本开始,我一直在尝试将其转化为正确的版本:


映射此关系的正确方法是什么?

我猜您会遇到一个错误,例如
无法确定父/子表之间的联接条件…
在这种情况下,将
Group\u的映射器更改为\u Group
,如下所示:

mapper(Group_To_Group, t_group_groups, properties={
    'parent_group':relationship(Group,
        primaryjoin=(t_group_groups.c.parent_group_id==t_groups.c.id),),
    'child_group':relationship(Group,
        primaryjoin=(t_group_groups.c.child_group_id==t_groups.c.id),),
})

此外,您可能还需要添加
backref
,这样您就可以从
组中导航关系了。

我昨晚肯定做了一些微妙的错误。尽管如此,还是做到了,谢谢!
mapper(Group_To_Group, t_group_groups, properties={
    'parent_group':relationship(Group,
        primaryjoin=(t_group_groups.c.parent_group_id==t_groups.c.id),),
    'child_group':relationship(Group,
        primaryjoin=(t_group_groups.c.child_group_id==t_groups.c.id),),
})