美文网首页
Flask 中的一对多和多对多

Flask 中的一对多和多对多

作者: Fizz翊 | 来源:发表于2018-10-11 16:45 被阅读201次

1.ForeignKey

class Students(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    s_name = db.Column(db.String(20), unique=False, nullable=False)
    s_age = db.Column(db.Integer, default=18)
    s_g = db.Column(db.Integer, db.ForeignKey('grade.id'), nullable=True)
class Grade(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    g_name = db.Column(db.String(30), unique=True, nullable=False)
    students = db.relationship('Students', backref='grade')
    __tablename__ = 'grade'

flsk中的一对多

在多的一方需要写一个字段s_g 在其中写上db.ForeignKey('grade.id'),参数为一对多的一的一方的主键。这个字段在数据库中是不存在的。

在少的一方需要添加一个relationship字段 students = db.relationship('Students', backref='grade') ,

backref为反向查询的关键字

查询:

  • 正向查询(一查多)

    stus = Grade.query.get(id).students
    
  • 反向查询(多查一)

    the_grade = Student.query.get(id).grade
    

2.ManyToMany

class Students(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    s_name = db.Column(db.String(20), unique=False, nullable=False)
    s_age = db.Column(db.Integer, default=18)
    s_g = db.Column(db.Integer, db.ForeignKey('grade.id'), nullable=True)
class Course(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    c_name = db.Column(db.String(10), unique=True, nullable=False)
    students = db.relationship('Students', secondary='s_c', backref='cou')
    __tablename__ = 'course'

中间表:

s_c = db.Table('s_c',
               db.Column('s_id', db.Integer, db.ForeignKey('students.id'), primary_key=True),
               db.Column('c_id', db.Integer, db.ForeignKey('course.id'), primary_key=True),
               )

多对多可以在任意一方中添加一个relationship字段,第一个参数为关联的另外一个表,第二个参数为中间表的表名,第三个参数backref是反向查询时的关键字

在flask中多对多的中间表需要自己建立。建立的中间表的类为db.Table(),第一个参数为中间表的表名,然后在表中添加两个字段,这两个字段分别为关联的两个表的一对多的外键,也同为主键。

查询

  • 正向查询(写有relationship的一边查另外一边)

    stus = Course.query.get(id).students
    
  • 反向查询

    grade = Students.query.get(id).cou
    

相关文章

  • Flask 中的一对多和多对多

    1.ForeignKey flsk中的一对多 在多的一方需要写一个字段s_g 在其中写上db.ForeignKey...

  • 模型关系

    模型关系主要分为一对一,一对多和多对多。在flask官网中只给出了一对多和多对多的解释应用,所以一对一的实现依赖于...

  • mysql ---多对多

    flask的orm框架(SQLAlchemy)-一对多查询以及多对多查询(venv) $ pip install...

  • MyBatis一对多和多对一

    在学习MyBatis3的过程中,文档上面一直在强调一个id的东西!在做这个实验的时候,也因为没有理解清楚id含义而...

  • 关于一对多和多对一

    声明:所有文章只作为学习笔记用,转载非原创 大概可以这样类比:程序集好比一个人定居的国度,命名空间好比这个人的国籍...

  • hibernate 一对多、多对多操作

    表之间的关系 一对多一个部门有多个员工,一个员工只能属于某一个部门一个班级有多个学生,一个学生只能属于一个班级 多...

  • MyBatis一对一,一对多,多对一,多对多

    一对一使用associate,一个类根据关联字段对应着一个类,实体类里声明另一个实体类 一对多使用collecti...

  • hibernate里的一对多,多对一,多对多

  • Django中关系查询

    1 Django中关系查询 一对一 一对多 多对多 1.1 一对多 1.1.1 app下创建models类 1.1...

  • MYSQL的一对多和多对一

    A、使用场景当前一个选修课,很多学生报名了这个课程,当我们查询这个选修课的时候,把对应的多个学生查询出来 2、数据...

网友评论

      本文标题:Flask 中的一对多和多对多

      本文链接:https://www.haomeiwen.com/subject/pynbaftx.html