相关(对于无关联对象用例):SQLAlchemy单表上的多对多关系
建立多对多关系很容易.如上面的问题所述,在同一个表上建立多对多关系几乎一样容易.
与关联对象建立多对多关系也很容易.
我似乎无法找到的是组合关联对象和多对多关系的正确方法,左侧和右侧是同一个表.
所以,从简单,天真,明显错误的版本开始,我花了很长时间试图按摩到正确的版本:
t_groups = Table('groups', metadata,
    Column('id', Integer, primary_key=True),
)
t_group_groups = Table('group_groups', metadata,
    Column('parent_group_id', Integer, ForeignKey('groups.id'), primary_key=True, nullable=False),
    Column('child_group_id', Integer, ForeignKey('groups.id'), primary_key=True, nullable=False),
    Column('expires', DateTime),
)
mapper(Group_To_Group, t_group_groups, properties={
    'parent_group':relationship(Group),
    'child_group':relationship(Group),
})
映射这种关系的正确方法是什么?
我猜你得到的错误就像Could not determine join condition between parent/child tables...
在这种情况下,将mapper更改为Group_To_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以便您也可以从Group对象中导航关系.
| 归档时间: | 
 | 
| 查看次数: | 716 次 | 
| 最近记录: |