flask中一对一,一对多以及多对多关系的设定

一对多关系:

class Grade(db.Model):
    id=db.Column(db.Integer,primary_key=True)
    name=db.Column(db.String(20),nullable=False)
    num = db.Column(db.Integer, default=0)
    time = db.Column(db.String(20), default=‘2018-01-01‘)

    students=db.relationship(‘Student‘,backref=‘gd‘,lazy=‘dynamic‘)
    __tablename__=‘grade‘

class Student(db.Model):
    id=db.Column(db.String(50),primary_key=True)
    name=db.Column(db.String(50),nullable=False)
    password = db.Column(db.String(50), nullable=False)
    sex = db.Column(db.String(50), nullable=False)
    phone = db.Column(db.String(11), nullable=False)
    photo = db.Column(db.String(100), default=None)

    grades=db.Column(db.Integer,db.ForeignKey(‘grade.id‘))

    __tablename__ = ‘student‘

一对一关系:在relationship里面lazy变量去掉,换成uselist=False

多对多关系:

其实多对多关系的处理是在两个表之间建立另外一张表格,设置两个外键去分别关联另外两张表的主键

t_g=db.Table(‘t_g‘,db.Column(‘t_id‘,db.String(50),db.ForeignKey(‘teacher.id‘)),db.Column(‘g_id‘,db.Integer,db.ForeignKey(‘grade.id‘)))

class Teacher(db.Model,DBO):
    id=db.Column(db.String(50),primary_key=True)
    name=db.Column(db.String(50),nullable=False)
    password = db.Column(db.String(50), nullable=False)
    phone=db.Column(db.String(11), nullable=False)
    photo=db.Column(db.String(100),default=None)

    grades=db.relationship(‘Grade‘,secondary=t_g,backref=‘th‘,lazy=‘dynamic‘)
    __tablename__=‘teacher‘

class Grade(db.Model,DBO):
    id=db.Column(db.Integer,primary_key=True)
    name=db.Column(db.String(20),nullable=False)
    num = db.Column(db.Integer, default=0)
    time = db.Column(db.String(20), default=‘2018-01-01‘)

    students=db.relationship(‘Student‘,backref=‘gd‘,lazy=‘dynamic‘)
    __tablename__=‘grade‘

原文地址:https://www.cnblogs.com/beifangls/p/9809940.html

时间: 2024-11-17 11:09:58

flask中一对一,一对多以及多对多关系的设定的相关文章

数据库中根据数据一对一,一对多,多对多关系设计

做一个项目,必然是少不了数据库设计的!在学习阶段,基本都是单表.然而在实际开发过程中,一对多,多对多的表处处都是!简单整理一下,一对多,多对多表如何设计整理一下思路: 数据库实体间有三种对应关系:一对一,一对多,多对多. 一对一关系示例: 一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号. 一对多关系示例: 一个学生只属于一个班,但是一个班级有多名学生. 多对多关系示例: 一个学生可以选择多门课,一门课也有多名学生. 1.一对多关系处理: 通过学生和班级问题了解一对多: 设计数据库表

数据库一对一、一对多、多对多关系

数据库一对一.一对多.多对多关系 一.首先给出三种关系的实例 一对一关系实例 ? 一个人对应一张身份证,一张身份证对应一个人 一对多关系实例 ? 一个公司的部门拥有多个职员,一个职员只能够属于某个部门 多对多实例 ? 一本图示可以拥有多个作者,一个作者可以写很多本书. 一对一关系 一对多,是最常见的一种设计.就是 A 表的一条记录,对应 B 表的多条记录,且 A 的主键作为 B 表的外键.这主要看以哪张表为中心. 优点 便于管理.可提高一定的查询速度 减轻 CPU 的 IO 读写,提高存取效率.

Hibernate中一对多和多对一关系

1.单向多对一和双向多对一的区别? 只需要从一方获取另一方的数据时 就使用单向关联双方都需要获取对方数据时 就使用双向关系 部门--人员 使用人员时如果只需要获取对应部门信息(user.getdeptarment())不需要 从部门下的人员信息时,就配置成单向 多对一 使用部门时如果只需要获取部门下人员信息(deptartmanet.getusers())不需要 从人员获取部门信息时,就配置成单向 一对多 既要获取部门下人员 deptartmanet.getusers()又要从人员获取部门信息

EF里一对一、一对多、多对多关系的配置和级联删除

      参考 EF里一对一.一对多.多对多关系的配置和级联删除 EF里的默认映射以及如何使用Data Annotations和Fluent API配置数据库的映射

Django 一对多,多对多关系解析

[转]Django 一对多,多对多关系解析 Django 的 ORM 有多种关系:一对一,多对一,多对多. 各自定义的方式为 : 一对一: OneToOneField 多对一: ForeignKey 多对多: ManyToManyField 上边的描述太过数据而缺乏人性化,我们来更人性化一些: 多个属于一个,即 belong to :  ForeignKey,多个属于一个 一个有一个,即 has one: OneToOneField 一个有很多个,即 has many:  lots of A b

JPA一对多和多对一关系

1-m:多的一方为关系维护端,关系维护端负责外键纪录的更新,关系被维护端没有权力更新外键纪录. 维护端注解 Java代码   @OneToMany(cascade = { CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE, CascadeType.REMOVE }, fetch = FetchType.EAGER, mappedBy = "order") 被维护端注解 Java代码   @ManyToOne(casc

数据库一对一,一对多,多对多关系

关联映射:一对多/多对一 存在最普遍的映射关系,简单来讲就如球员与球队的关系: 一对多:从球队角度来说一个球队拥有多个球员 即为一对多 多对一:从球员角度来说多个球员属于一个球队 即为多对一 数据表间一对多关系如下图: 关联映射:一对一 一对一关系就如球队与球队所在地址之间的关系,一支球队仅有一个地址,而一个地址区也仅有一支球队. 数据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联.图示如下: 一对一外键关联: 一对一主键关联:要求两个表的主键必须完全一致,通过两个表的主键建立关联关

jango 模型管理数据model,数据库外键主键与一对一,一对多,多对多关系

四.models.py 定义和管理模型: 4.1模型class的属性就映射与数据库的字段参数 继承models.Model class TestClass(models.Model): 4.2在数据库生成数据表: #django默认在makemigrations会为表对象创建主键id,id = models.AutoField(primary_key=True) 你也可以自定义一个主键对象: 4.2.1: 生成迁移文件python manage.py makemigrations 4.2.2执行

Hibernate中的一对多、多对多映射

一.一对多映射  如快递网点(ExpSite)与快递员(Deliver)的关系,即为一对多关系,一个快递网点有多个快递员,他们的关系如下图所示. 在一对多中,外键在多的一方 (1)在多的一方配置外键 Deliver表为多方,在Deliver实体类中放一个ExpSite方的引用做属性(外键),即所属网点ExpSiteId; Deliver实体类配置文件: <many-to-one name="ExpSiteId" class="ExpSite表所在的包名+ExpSite表