SQLAlchemy建立数据库模型之间的关系
常见关系: 一对多关系 多对一关系 多对多关系 一对一关系 一对多关系(一个作者,多篇文章) 123456789101112131415161718192021222324252627282930## 一对多关系,单作者-多文章,外键不可少## 外键(ForeignKey)总在多的那边定义,关系(relationship)总在单的那边定义class Author(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(70), unique=True) phone = db.Column(db.String(20)) # articles为关系属性(一个集合,可以像列表一样操作,在关系的出发侧定义 ## relationship()函数的第一个参数为关系另一侧的模型名称(Article) articles = db.relationship('Article')class Article(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(15), index=True) body = db.Column(db.Text) # 传入ForeignKey的参数形式为:"表名.字段名" ## 模型类对应的表名由Flask-SQLAlchemy生成,默认为类名称的小写形式,多个单词通过下划线分隔 author_id = db.Column(db.Integer, db.ForeignKey('author.id')) ## 外键字段(author_id)和关系属性(articles)的命名没有限制## 建立关系可通过操作关系属性进行>>>shansan = Author(name="shansan")>>>hello = Article(title="Hello world !")>>>boy = Article(title="Hello Boy !")>>>db.session.add(shansan) # 将创建的数据库记录添加到会话中>>>db.session.add(hello)>>>db.session.add(boy)>>>shansan.articles.append(hello) # 操作关系属性>>>shansan.articles.append(boy)>>>db.session.commit()