Flask-sqlalchemy多对多关系

来源:互联网 发布:关晓彤用的直播软件 编辑:程序博客网 时间:2024/04/29 15:57
from flask import Flaskfrom flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///./Article2.db'db = SQLAlchemy(app)article_tag = db.Table('article_tag',    db.Column('article_id',db.Integer,db.ForeignKey('article.id'),primary_key=True),    db.Column('tag_id',db.Integer,db.ForeignKey('tag.id'),primary_key=True)         )class Article(db.Model):    __tablename__ = 'article'    id = db.Column(db.Integer,primary_key = True,autoincrement= True)    title = db.Column(db.String(100),nullable = False)    #让Article和Tag产生关联    #因为Article和Tag表中间还有一个article_tag表,所以添加secondary    #假如拿到了一个标签Tag,怎么拿到标签下的所有文章呢.反向引用Article这时用backref    tags = db.relationship('Tag',secondary= article_tag,backref = db.backref('articles'))class Tag(db.Model):    __tablename__ = 'tag'    id = db.Column(db.Integer,primary_key = True,autoincrement= True)    name = db.Column(db.String(100),nullable = True)db.create_all() #tag和article_tag共同组成主键@app.route('/')def function():    article1 = Article(title = 'aaa')    article2 = Article(title = 'bbb')    tag1 = Tag(name = '111')    tag2 = Tag(name = '222')#实现多对多关系,一个article有两个标签    # article1.tags.append(tag1)    # article1.tags.append(tag2)    # article2.tags.append(tag1)    # article2.tags.append(tag2)    db.session.add(article1)    db.session.add(article2)    db.session.add(tag1)    db.session.add(tag2)    db.session.commit()    article1 = Article.query.filter(Article.title == 'aaa').first()    tags = article1.tags    for tag in tags:        print(tag.name)    return 'index'if __name__ == '__main__':    app.run()
原创粉丝点击