我正在尝试从原始SQL切换到SQLAlchemy,我正在努力建模用户和团队之间的关系。 在这种情况下,团队有一个用户列表,用户可以是零个或一个团队
在用户表中使用“可选外键”之类的方法,引用team.id可能会起作用,但它必须可以为null,这不是最好的方式
使用原始SQL时,我通常创建第三个表TeamUser(user\u id,team\u id),其中user\u id作为主键
在SQLAlchemy中完全可以通过创建一个表来复制这一点,但是使用这些对象需要编写的python代码变得不那么清晰
例如:
将用户添加到团队:
db.session.add(TeamUser(user_id=user.id, team_id=team.id))
#instead of
team.users.append(user)
访问用户的团队:
user.team.team (user.team is now the couple (user_id, team_id))
获取作为用户对象的用户列表:
map(lambda team_user: team_user.user, team.users)
#instead of
team.users
所以我的问题是:在使用SQLAlchemy对象时,有没有一种方法既可以对这种用户/团队情况建模,又可以保持简单的语法
我已经研究了主连接,但它似乎没有回答这个问题。(但也许我错了)
如果您确实想使用联接表,请查看association_proxy
对于一对多关系,外键更简单。玩家(用户可能是一个保留字)引用了一个团队:
一支球队有一份球员名单:
然后你可以通过
获得一个球员的球队(可能是
None
)将玩家列表作为玩家对象获取
相关问题 更多 >
编程相关推荐