我试图基于多对多关系来获得这样的数据结构。
例如,假设有一个包含Users
的表和一个包含Roles
的表。用户可以拥有许多角色。
user_roles = db.Table(
'user_roles',
db.Column('user_id', db.Integer, db.ForeignKey(User.id), primary_key=True),
db.Column('role_id', db.Integer, db.ForeignKey(Role.id), primary_key=True)
)
我想要获得的是这样的数据结构,其中Role
是关键,后面的列表是该角色的所有用户,如下所示
{
'Write_Articles': ['<User Corvid>, <User Crow>'],
'Delete_Articles': ['<User Corvid>'],
'Change_Tags': ['<User Crow>', '<User Jeff>'],
'Kitty_Cat': ['<User Kitty>']
}
如何在SQLAlchemy中实现这一目标?
答案 0 :(得分:1)
急切加载关系以避免多次查询,并使用字典理解来操纵结果。
by_name = {g.name: g.users for g in Group.query.options(db.joinedload(Group.users))}