知識點:
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
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 |
歡迎關注我的公眾號: