python3 + flask + sqlalchemy +orm(3):多对多关系
一篇文章有多个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):多对多关系的更多相关文章
- python3 + flask + sqlalchemy +orm(2):数据库中添加表
往数据库中添加一张保存文章的表,表明为article,字段有id,title,content 同样一个配置文件:config.py DEBUG = True #dialect+driver://roo ...
- python3 + flask + sqlalchemy +orm(1):链接mysql 数据库
1.pycharm中新建一个flask项目 2.按装flask.PyMySQL.flask-sqlalchemy 3.项目下面新建一个config.py 文件 DEBUG = True #dialec ...
- flask SQLAlchemy中一对多的关系实现
SQLAlchemy是Python中比较优秀的orm框架,在SQLAlchemy中定义了多种数据库表的对应关系, 其中一对多是一种比较常见的关系.利用flask sqlalchemy实现一对多的关系如 ...
- flask 中orm关系映射 sqlalchemy的查询
flask的orm框架(SQLAlchemy)-一对多查询以及多对多查询 一对多,多对多是什么? 一对多.例如,班级与学生,一个班级对应多个学生,或者多个学生对应一个班级. 多对多.例如,学生与课 ...
- flask的orm框架(SQLAlchemy)-一对多查询以及多对多查询
一对多,多对多是什么? 一对多.例如,班级与学生,一个班级对应多个学生,或者多个学生对应一个班级. 多对多.例如,学生与课程,可以有多个学生修同一门课,同时,一门课也有很多学生. 一对多查询 如果一个 ...
- day 69 orm操作之表关系,多对多,多对一(wusir总结官网的API)
对象 关系 模型 wusir博客地址orm官网API总结 django官网orm-API orm概要: ORM 跨表查询 class Book(models.Model): title = mod ...
- 用SQLAlchemy创建一对多,多对多关系表
多对多关系表的创建: 如果建立好多对多关系后,我们就可以通过关系名进行循环查找,比如laowang = Teacher.query.filter(Teacher.name=='laowang').fi ...
- flask系列四之SQLAlchemy(二)表关系
一.SQLAlchemy外键约束 1.创建外键约束表结构 目标:建立两个表“用户表(user)”和“问题表( question)”,其中问题表中的作者id是是用户表的id即外键的关系.(一个用户可以有 ...
- 【Flask】ORM 关系一对一
### 一对一的关系:在sqlalchemy中,如果想要将两个模型映射成一对一的关系,那么应该在父模型中,指定引用的时候,要传递一个`uselist=False`这个参数进去.就是告诉父模型,以后引用 ...
随机推荐
- Java8中的 lambda 和Stream API
前言 由于项目中用到了比较多有关于 Java8 中新的东西,一开始自己只是会写,但是写起来不太顺,然后就在网上找到了一个很好的关于Java8新特性的视频,所以就进行了学习了一下,以下是自己对 la ...
- linux 学习笔记 执行脚本篇章
r w x 读 写 执行 4 2 1 如果要启动tomcat服务器 即执行startup.sh 脚本文件 1) #chmod 444 startup.sh <----增加文本读权限 即 ...
- PHP学习笔记 ThinkPHP
//检测文件是否存在 if(!file_exists(dirname(__FILE__)."/Bo/Admin/Conf/config.php")) { header('Locat ...
- jquery 1.7.2源码解析(一)总体架构
总体架构 jquery模块分类和依赖关系: 自调用匿名函数: /** * 自调用匿名函数,jquery加载完后立即被调用,用来加载各个模块 * 为什么使用自调用匿名函数: * 通过使用自调用匿名函数, ...
- DWM1000 蓝点无限 PCB样板
蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: 虽然经过一段很长时间的停滞,最近调试成功,可以实现精准测距 和定位. 部分模块正在陆续整理,准备出售一 ...
- [COCI2013]DLAKAVAC
[COCI2013]DLAKAVAC 题目大意: 有一个长度为\(m(m\le1500)\)的\(01\)串\(A\),进行\(k(k\le10^{18})\)次操作.一次操作完的串中若\(A_i=1 ...
- Django content-type 使用
1.models class PricePolicy(models.Model): """价格与有课程效期表""" content_type ...
- nodejs+koa2微信app支付,小程序支付
企业付款到零钱文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2 1,搞微信支付,先看流程图 https: ...
- C++程序设计方法3:自动类型转换
方法1:在源类中定义目标类型转换运算符 #include <iostream> using namespace std; class Dst { public: Dst() { cout ...
- jsp下载文件的实现方法及注意事项 (转)
jsp中实现文件下载,最简单的方式是在网页上做超级链接,如:<a href="music/abc.mp3">点击下载</a>. 但是,这样服务器上的目录资源 ...