zoukankan      html  css  js  c++  java
  • flask 数据库多对多(文章和标签)

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    import config


    app = Flask(__name__)
    app.config.from_object(config)
    db = SQLAlchemy(app)


    article_tag = db.Table("article_tag",
                  # article_id 设置成外键他关联 文章表的主键、同时设置成主键
                           db.Column("article_id", db.Integer, db.ForeignKey('article.id'),primary_key=True),
                  #tag_id 设置成外键、他关联标签表的主键、并且设置成主键
                           db.Column("tag_id", db.Integer, db.ForeignKey('tag.id'),primary_key=True)
    )

    #标签表 一个标签可以同时出现在多个文章上面
    class Tag(db.Model):
    __tablename__ = "tag"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(100), nullable=False)

    #文章表 一个文章可以有多个标签、
    class Article(db.Model):
    __tablename__ = 'article'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(100), nullable=False)
    #一个文章有多个标签、 一个标签也属于多个文章、所以属于多对多 要用到第三张表, 通过secondary定义
    tags = db.relationship('Tag',secondary=article_tag, backref=db.backref('articles'))


    @app.route("/")
    def index():
    return "kk"

    if __name__ == '__main__':
    db.drop_all()
    db.create_all()

    #两个文章对象
    article1 = Article(title='大闹天宫')
    article2 = Article(title='心之所向')

    #两个标签对象
    tag1 = Tag(name='人物剧')
    tag2 = Tag(name='思想剧')
    #给大闹天宫文章添加人物剧
    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()
    app.run()
  • 相关阅读:
    Java代码:response压缩响应
    SpringBoot框架:第一章:基础配置和介绍
    asp.net 发送email
    .NET环境下水晶报表使用总结
    ASP.net(c#)生成条形码
    表格操作类(添加,删除,排序,上移,下移)
    NET email
    C#如何打印条形码EAN13码
    在asp.net中备份还原SQL Server数据库
    配置SQL2000数据库发送邮件
  • 原文地址:https://www.cnblogs.com/yuanjia8888/p/13722487.html
Copyright © 2011-2022 走看看