首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >flask 数据库关系(flask 28)

flask 数据库关系(flask 28)

作者头像
用户5760343
发布2019-08-13 14:43:16
发布2019-08-13 14:43:16
6140
举报
文章被收录于专栏:sktjsktj

1、一对多关系

双向关系的例子:使用back_populates来定义,两边都需要加添加

class Writer(db.Model): books=db.relationship('Book',back_populates='writer') class Book(db.Model): writer_id=db.Column(db.Integer,db.ForeignKey('writer.id')) writer=db.relationship('Writer',back_populations='books')

双向关系:使用backref,简化

class Writer(db.Model): books=db.relationship('Book',backref='writer') class Book(db.Model): writer_id=db.Column(db.Integer,db.ForeignKey('writer.id'))

2、多对一关系:

image.png

3、一对一关系 class Country(db.Model): capital=db.relationship('Capital',uselist=False) class Capital(db.Model): country_id=db.Column(db.Integer,db.ForeignKey('country.id')) country=db.relationship('Country')

4、多对多关系 association_table=db.Table('association',db.Column('student_id',db.Integer,db.ForeignKey('student.id')),db.Column('teacher_id',db.Integer,db.ForeignKey('teacher.id'))) class Student(db.Model): teachers=db.relationship('Teacher',secondary=association_table,back_populates='students') class Teacher(db.Model): students=db.relationship('Student',secondary=association_table,back_populates='teachers')

关系的添加和移除:append() remove() db.drop_all() db.create_all()


多对一关系映射

authod_id=db.Column(db.Integer,db.Foreignkey('author.id'))

一对多

articles=db.relationship('Article')

解除: foo.articles.remove(spam)

db关系:

image.png

db关系的加载方式: select 必要时一次性加载全部 joined 级联加载 immediate 全部加载 subquery 子查询加载 dynamic 不直接加载

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.08.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 双向关系的例子:使用back_populates来定义,两边都需要加添加
  • 双向关系:使用backref,简化
  • 多对一关系映射
  • 一对多
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档