知识点: 1、模型关系参照
一、概况
在数据库中,我们知道数据关系大概有如下几种:一对一、一对多、多对多、自关联等。我们模型已经描述过了一对多,那么下面我们在用模型把其它关系也写出来。
关系
class Article(db.Model):__tablename__ = 'tbl_article'id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(128), unique=True) content = db.relationship('Acontent', backref='article', uselist=False)
class Acontent(db.Model):__tablename__ = 'tbl_acontent'id = db.Column(db.Integer, primary_key=True) content = db.Column(db.Text(4000)) article_id = db.Column(db.Integer, db.ForeignKey('tbl_article.id'))
复制代码
tbl_article
tbl_acontent
id | content | article_id |
---|
1 | Flask是轻量级框架 | 1 |
2 | Flask是模型入门 | 2 |
class Category(db.Model):__tablename__ = 'tbl_category'id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(32), unique=True) article = db.relationship('Article', backref='category')
class Article(db.Model):__tablename__ = 'tbl_article'id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(128), unique=True) category_id = db.Column(db.Integer, db.ForeignKey('tbl_category.id')) content = db.relationship('Acontent', backref='article', uselist=False)
复制代码
tbl_category
tbl_article
id | title | category_id |
---|
1 | Flask是轻量级框架 | 1 |
2 | Flask是模型入门 | 2 |
3 | Flask是模型查询 | 2 |
- 多对多模型 案例:一个标签对应很多文章,一篇文章也对应很多标签
tbl_tags = db.Table('tbl_tags',db.Column('tag_id', db.Integer, db.ForeignKey('tbl_tag.id')),db.Column('article_id', db.Integer, db.ForeignKey('tbl_article.id')))
class Tag(db.Model):__tablename__ = 'tbl_tag'id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(32), unique=True)
class Article(db.Model):__tablename__ = 'tbl_article'id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(128), unique=True) category_id = db.Column(db.Integer, db.ForeignKey('tbl_category.id')) content = db.relationship('Acontent', backref='article', uselist=False) tags = db.relationship('Tag', secondary=tbl_tags, backref='articles')
复制代码
tbl_tag
tbl_article
id | title | category_id |
---|
1 | Flask是轻量级框架 | 1 |
2 | Flask是模型入门 | 2 |
3 | Flask是模型查询 | 2 |
tbl_tags
class Area(db.Model):__tablename__ = "tbl_area"id = db.Column(db.Integer, primary_key=True) name = db.Column(db.Text, nullable=False) parent_id = db.Column(db.Integer, db.ForeignKey("tbl_area.id")) parent = db.relationship("Area", remote_side=[id]) 复制代码
id | name | parent_id |
---|
1 | 北京市 | Null |
2 | 黑龙江 | Null |
3 | 哈尔滨 | 2 |
4 | 南岗区 | 3 |
5 | 北京市 | 1 |
6 | 朝阳区 | 5 |
欢迎关注我的公众号: