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()
  • 相关阅读:
    python2.7之打飞机(文末附素材链接)
    python画小猪佩奇
    什么叫递归
    DIV居中的几种方法
    什么是控制反转
    上传图片及时预览
    MVC与三层的区别
    From表单提交刷新页面?
    文件上传之form表单篇
    文件上传之伪Ajax篇
  • 原文地址:https://www.cnblogs.com/yuanjia8888/p/13722487.html
Copyright © 2011-2022 走看看