【发布时间】:2020-09-27 23:56:39
【问题描述】:
我正在尝试从原始 SQL 切换到 SQLAlchemy,并且正在努力为用户和团队之间的关系建模。 在这种情况下,团队有一个用户列表,而用户可以在零个或一个团队中。
类似于用户表中的“可选外键”,引用 team.id 可以工作,但它必须是可空的,这不是最好的方式。
使用原始 SQL 时,我通常会创建第三个表 TeamUser(user_id, team_id),其中 user_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 对象的同时对这种用户/团队情况进行建模并保持简单的语法?
我查看了主连接,但它似乎没有解决这个问题。 (但也许我错了)
【问题讨论】:
标签: python sqlalchemy