知识点: 一、模型关系参照python
1、概况
在数据库中,咱们知道数据关系大概有以下几种:一对1、一对多、多对多、自关联等。咱们模型已经描述过了一对多,那么下面咱们在用模型把其它关系也写出来。mysql
关系
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
id |
title |
1 |
Flask入门 |
2 |
Flask模型 |
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
id |
name |
1 |
python |
2 |
后端 |
3 |
mysql |
tbl_article
id |
title |
category_id |
1 |
Flask是轻量级框架 |
1 |
2 |
Flask是模型入门 |
2 |
3 |
Flask是模型查询 |
2 |
tbl_tags
tag_id |
article_id |
1 |
1 |
1 |
1 |
2 |
1 |
2 |
2 |
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 |
欢迎关注个人公众号:sql