一篇文章有多个tag,一个tag也可以属于多篇文章,文章和tag存在多对多关系

config.py

DEBUG = True
#dialect+driver://root:1q2w3e4r5t@127.0.0.1:3306/
DIALECT = 'mysql'
DRIVER='pymysql'
USERNAME = 'demo_user'
PASSWORD = 'demo_123'
HOST = '172.16.10.6'
PORT = 3306
DATABASE = 'db_demo1' SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)
SQLALCHEMY_TRACK_MODIFICATIONS = False
print(SQLALCHEMY_DATABASE_URI)

app.py

from flask import Flask
import config from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.ext.declarative import declarative_base app = Flask(__name__)
app.config.from_object(config) db = SQLAlchemy(app)
Base = declarative_base() 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=True)
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() @app.route('/')
def index():
article1 = Article(title="aaa")
article2 = Article(title="bbb") 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()
return 'index' if __name__ == '__main__':
app.run(debug=True)

python3 + flask + sqlalchemy +orm(3):多对多关系的更多相关文章

  1. python3 + flask + sqlalchemy +orm(2):数据库中添加表

    往数据库中添加一张保存文章的表,表明为article,字段有id,title,content 同样一个配置文件:config.py DEBUG = True #dialect+driver://roo ...

  2. python3 + flask + sqlalchemy +orm(1):链接mysql 数据库

    1.pycharm中新建一个flask项目 2.按装flask.PyMySQL.flask-sqlalchemy 3.项目下面新建一个config.py 文件 DEBUG = True #dialec ...

  3. flask SQLAlchemy中一对多的关系实现

    SQLAlchemy是Python中比较优秀的orm框架,在SQLAlchemy中定义了多种数据库表的对应关系, 其中一对多是一种比较常见的关系.利用flask sqlalchemy实现一对多的关系如 ...

  4. flask 中orm关系映射 sqlalchemy的查询

    flask的orm框架(SQLAlchemy)-一对多查询以及多对多查询   一对多,多对多是什么? 一对多.例如,班级与学生,一个班级对应多个学生,或者多个学生对应一个班级. 多对多.例如,学生与课 ...

  5. flask的orm框架(SQLAlchemy)-一对多查询以及多对多查询

    一对多,多对多是什么? 一对多.例如,班级与学生,一个班级对应多个学生,或者多个学生对应一个班级. 多对多.例如,学生与课程,可以有多个学生修同一门课,同时,一门课也有很多学生. 一对多查询 如果一个 ...

  6. day 69 orm操作之表关系,多对多,多对一(wusir总结官网的API)

    对象  关系  模型 wusir博客地址orm官网API总结 django官网orm-API orm概要: ORM 跨表查询 class Book(models.Model): title = mod ...

  7. 用SQLAlchemy创建一对多,多对多关系表

    多对多关系表的创建: 如果建立好多对多关系后,我们就可以通过关系名进行循环查找,比如laowang = Teacher.query.filter(Teacher.name=='laowang').fi ...

  8. flask系列四之SQLAlchemy(二)表关系

    一.SQLAlchemy外键约束 1.创建外键约束表结构 目标:建立两个表“用户表(user)”和“问题表( question)”,其中问题表中的作者id是是用户表的id即外键的关系.(一个用户可以有 ...

  9. 【Flask】ORM 关系一对一

    ### 一对一的关系:在sqlalchemy中,如果想要将两个模型映射成一对一的关系,那么应该在父模型中,指定引用的时候,要传递一个`uselist=False`这个参数进去.就是告诉父模型,以后引用 ...

随机推荐

  1. Sort功能极强!

    Sort功能极强! 可以排string:  sort(a.begin(),a.end()); 普通数组 结合结构体 逆序 而且贼快

  2. ECMAScript6 入门 变量的解析赋值

    ES6 允许按照一定模式,先=从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 这句话的解释:第一步从数组或者对象中提取值,第二步将提取到的值对变量进行赋值 数组的解 ...

  3. 利用反射编写私有 Private 方法的单元测试

    利用反射编写私有 Private 方法的单元测试 最近在添加一个新feature时,鉴于要给自己的代码一是增加代码的强壮性,二是增加代码测试的覆盖率.但是遇到了有些方法是 Private 的,但是在调 ...

  4. Django之路由

    Django的路由系统 URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. 我们就是以这种方式告诉Django,遇到哪个URL的时 ...

  5. VMware5.5-vCenter Converter(转换)

    vCenter Converter 已知问题 出现:指定的参数不正确: "info.owner" 操作时一定是管理员,而不是管理员组的成员.或者: 如果 Converter Sta ...

  6. iis和tomcat同时运行,完美解决80端口冲突问题

    背景:一台vps服务器上需要同时运行两个网站,节(老)省(板)成(扣)本,用一个服务器.一个是已经建好的官网(iis管理一键安装的PHP网站),另一个是java 项目网站(jeecg框架修改的商城项目 ...

  7. 搭建WordPress 个人博客

    1,准备 LAMP 环境 LAMP 是 Linux.Apache.MySQL 和 PHP 的缩写,是 Wordpress 系统依赖的基础运行环境.我们先来准备 LAMP 环境: (由于部分服务安装过程 ...

  8. 后台执行Bitmap加载

    如果加载图片时,使用的图片数据源不是来自于内存,而是来自硬盘或网络时,一般不会再UI线程执行图片加载操作. 图片的加载速度取决于很多方面(往往具有不可预测性),比如:硬盘或者网络的读写速度.图片大小. ...

  9. Spring配置JDBCTemplate

    案例:单测查询全部学生 项目结构: 1.导入部署jar包:spring-jdbc <!--spring-jdbc--> <dependency> <groupId> ...

  10. VS2013 C#中调用DLL

    winform界面中,使用C#编程调用DLL过程记录: (1)什么是DLL 动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL 是一个包含可由多个程序同时使用的代码 ...