• 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()
  • 相关阅读:
    linux设置开机服务自动启动
    Redis相关指令文档
    Redis配置文件详解
    redis在windows下的安装
    WIN2003+IIS6+FastCGI+PHP5.3的安装配置
    研究生生活点滴一
    数据链路层
    C++中的static成员
    在构造函数中调用构造函数
    Java和C++的不同
  • 原文地址:https://www.cnblogs.com/yuanjia8888/p/13722487.html
Copyright © 2020-2023  润新知