Models.py
class Role(Base):
__tablename__='role'
role_id = Column(Integer,primary_key=True)
role_name = Column(String(20),nullable=False)
class User(Base):
__tablename__='user'
user_id = Column(Integer,primary_key=True)
user_name = Column(String(20),nullable=False)
class UserRoles(Base):
__tablename__="user_roles"
user_id = Column(Integer,ForeignKey("User.user_id"),primary_key=True)
role_id = Column(Integer,ForeignKey("Role.role_id"),primary_key=True)
status = Column(Integer,nullable=True)
user = relationship("User")
role = relationship("role")
表中的数据 当接口的请求对象为{";user_id";:1,";Roles";:[1,3]}时,如何编写更新user_Roles表的接口。如何在FastAPI中使用SQLalChemy实现此目的? 首先应选择 获得一个角色可能有更简单的方法,您应该看看docs 然后选择要追加到ManyToMany字段的全部 然后将它们添加到列表中: 和提交会话: 这篇关于如何使用SQLAlChemy和FastAPI更新多对多关系?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持吉威生活! [英文标题]How to update many to many relationships using SQLAlchemy and FastAPI?
用户ID
角色ID
状态
1
1
1
1
2
1
2
1
1
推荐答案
UserRoles
进行更新:results = await session.execute(
select(UserRoles).where(UserRoles.id == user_id)
) # where user_id = 1
user_roles = results.scalars().all()[0]
Roles
:roles = await session.execute(select(Role).where(Role.role_id.in_(roles))) # Where roles = [1, 3]
for role in roles.scalars().all():
user_roles.role.append(role)
await session.commit()
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,如有侵权,请联系QQ:330946442删除。