首页 > 其他分享 >多对多关联

多对多关联

时间:2024-07-09 16:53:52浏览次数:4  
标签:角色 column Mapped 关联 mapped True id

 

 

在 SQLAlchemy 中,要想表示多对多关系,除了关系两侧的模型外,我们还需要创建一个关联表
(middle_table)。关联表不存储数据,只用来存储关系两侧模型的外键对应关系。

# 多对多关联,先定义中间表(没有对应的模型类)
middle_table = Table(
't_user_role',
Base.metadata,
Column('user_id', ForeignKey('t_user.id'), primary_key=True), # 联合主键
Column('role_id', ForeignKey('t_role.id'), primary_key=True),
)
class User(Base):
# 用户和角色之间是多对多关系, 一个用户可以拥有多个角色,一个角色可以所属多个用户
"""用户的模型类"""
__tablename__ = 't_user'
id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
username: Mapped[str] = mapped_column(String(20), unique=True,
nullable=False)
password: Mapped[str] = mapped_column(String(20), nullable=False)
# 一个用户有多个角色
roles: Mapped[Optional[List['Role']]] =
relationship(secondary=middle_table, back_populates='users')
class Role(Base):
"""角色的模型类"""
__tablename__ = 't_role'
id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
name: Mapped[str] = mapped_column(String(20), unique=True, nullable=False,
comment='角色的名字')
# 一个角色被多有用户所拥有
users: Mapped[Optional[List['User']]] =
relationship(secondary=middle_table, back_populates='roles')

 

标签:角色,column,Mapped,关联,mapped,True,id
From: https://www.cnblogs.com/yongheng999/p/18292286

相关文章

  • 关联查询
     #关联查询   isouter=True表示使用外连接#1、查询2020年入职的员工姓名以及该员工的所在部门名称result=session.execute(select(Employee.name,Dept.name).join(Dept,isouter=True).where(extract('year',Employee.entry_date)==2018))#2、查询省份号码是:11111......
  • 一对多和多对一关联
    比如:作者和文章之间,部门和员工之间都是一对多的关联关系。反过来就是:多对一的关联关系 1、定义外键约束定义关系的第一步是创建外键。外键是(foreignkey)用来在A表存储B表的主键值以便和B表建立联系的关系字段。因为外键只能存储单一数据(标量),所以外键总是在“多”这......
  • 一对一关联
    一对一关系实际上是通过建立双向关系的一对多关系的基础上转化而来。比如:一个用户对应一张身份证,一张身份证属于一个用户。 classIdCard(Base):"""省份证的模型类,它和员工之间是一对一的关联关系"""__tablename__='t_id_card'id:Mapped[int]=mapped_column(primary......
  • 一道关联对称点新定义题的详解
    原题:注:该题为2024北京中考考前数学精编卷最后一题,拿到的文档中给出该题的答案如下:其中第(2)问的答案是错误的.而且第(2)问题面的语句表述不通顺,修改如下: ......
  • 关联(Association) && 聚合(Aggregation) && 组合(Composition)
    组合概述在现实生活中,复杂的对象通常是由小的,简单的组成,从简单对象构建复杂对象的过程称为对象组合例如汽车是用金属框架,发动机,轮胎,变速器和其他大量零件制造而成的个人电脑由CPU,主板,内存等组成即便是你也是由较小部分组成:头,身体,腿,手从广义上讲,两个对象存在关系构成了......
  • 记一次.NET引用性能分析 - 客户说关联权限后查询不出数据
    背景:有客户说操作员关联权限后,某个页面查询不出数据,不关联权限就可以现象:1、用带权限的账号登进去后,查询不出数据,F12发现报错,"Anerroroccurredwhileexecutingthecommanddefinition.Seetheinnerexceptionfordetails."         2、浏览器......
  • centos7下载关联centos镜像文件
    1.CentOS在官网上直接下载网址:https://www.centos.org/download/我选择在这里下载https://mirrors.aliyun.com/centos/7/isos/x86_64/ 感觉还是慢直接网盘下载了 centos7.9:链接: https://pan.baidu.com/s/13BAfdn1-T5YkxLJ1IpwQyw提取码: bqyg2. 3. 4, 5. ......
  • vue项目子组件使用 dialog 弹框,如何实现父子组件弹框展示状态关联?
    vue项目,子组件使用el-dialog组件,想要实现在父组件可以控制子组件dialog的展示和隐藏,子组件自己可以控制dialog展示和隐藏,该如何实现?1.子组件(DialogComponent.vue)子组件接受一个来自父组件的prop,用来控制dialog的显示状态,并且当子组件内部需要改变dialog状态时,通过......
  • elementui el-tree 勾选/取消勾选:子级关联,父级不关联
    :check-strictly="true"父子不关联,在方法里处理子级关联逻辑setChecked方法需要定义node-key="id"<el-treeref="tree":data="treeData":props="defaultProps"default-expand-allhighlight-current:expand......
  • C++ 关联容器使用 map, unordered_map, set, unordered_set, multiset, unordered_mul
    关联容器是否有序是否关联值是否可重复访问时间set是否否对数map是是否对数multiset是否是对数multimap是是是对数unordered_map否是否常数unordered_set否否否常数unordered_multiset否否是常数unordered_multimap否是是常数#include<map>#include<set>#includ......