Flask-sqlalchemy多对多关系

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = 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()
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值