上篇文章讲的是一对多,这篇文章应该说多对多了

但是多对多无法用两张表来实现,因为外键......,你懂,哈哈哈!,所以中间需要加一张表来实现

承接上文,修改main.py中的代码如下:

#encoding:utf-8

from flask_sqlalchemy import SQLAlchemy

from flask import Flask

 

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://root:005@127.0.0.1:3306/data'

app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True

app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False

app.config['JSON_AS_ASCII']=False

db = SQLAlchemy(app)

db = SQLAlchemy(use_native_unicode='utf8')

Student_Teacher=db.Table(

'Student_Teacher',

        db.Column('tea_id',db.Integer,db.ForeignKey('tea.id'),primary_key=True),

        db.Column('stu_id',db.Integer,db.ForeignKey('stu.id'),primary_key=True)

)

class Student(db.Model):

    __tablename__='stu'

    id=db.Column(db.Integer,primary_key=True,autoincrement=True)

    name=db.Column(db.String(20),nullable=False)

class Teacher(db.Model):

    __tablename__='tea'

    id=db.Column(db.Integer,primary_key=True,autoincrement=True)

    name=db.Column(db.String(20),nullable=False)

    students=db.relationship('Student',secondary=Student_Teacher,backref=db.backref('mytea'))

@app.route('/')

def index():

    db.create_all()

    return '欢迎登录'

@app.route('/addinfo/')

def addinfo():

    s1=Student(name='s1')

    s2=Student(name='s2')

    s3=Student(name='s3')

    t1=Teacher(name='t1')

    t2=Teacher(name='t2')

    t3=Teacher(name='t3')

t1.students.append(s2)

    t1.students.append(s3)

t2.students.append(s1)

    t2.students.append(s3)

t3.students.append(s1)

    t3.students.append(s2)

db.session.add(t1)

    db.session.add(t2)

    db.session.add(t3)

    db.session.add(s1)

    db.session.add(s2)

    db.session.add(s3)

    db.session.commit()

    

    return '添加成功!'

@app.route('/del/<tea_name>/<stu_name>/')

def delnfo(tea_name,stu_name):

    t = Teacher.query.filter(Teacher.name==tea_name).first()

    s = Student.query.filter(Student.name==stu_name).first()

    t.students.remove(s)

    db.session.commit()

return '删除成功!'

@app.route('/find_stu/<tea_name>/')

def find_stu(tea_name):

    tea_temp=Teacher.query.filter(Teacher.name==tea_name).first()

    stus=tea_temp.students

    allname=''

    for stu_temp in stus:

        allname=allname+stu_temp.name+'  '

    return allname

@app.route('/find_tea/<stu_name>/')

def find_tea(stu_name):

    stu_temp=Student.query.filter(Student.name==stu_name).first()

    teas=stu_temp.mytea

    allname=''

    for tea_temp in teas:

        allname=allname+tea_temp.name+'  '

    return allname

if __name__=='__main__':

    app.run(debug=True)

打开浏览器,执行

127.0.0.1:5000

回车

127.0.0.1:5000/addinfo/

回车

127.0.0.1:5000/find_stu/t1

输入

127.0.0.1:5000/find_tea/s1

想看大神详细的讲解,请看:

https://blog.csdn.net/ying847782627/article/details/51333090

https://blog.csdn.net/qq_28877125/article/details/77664575

Flask 入门 (十一)的更多相关文章

  1. Flask入门笔记(一)

    一.程序的基本结构 1.1 最简单的Flask程序 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #coding=utf-8 # 初始化 from flask import Fla ...

  2. Flask入门HelloWorld

    Flask入门HelloWorld Flask官网:http://flask.pocoo.org/ Flask中文翻译:http://dormousehole.readthedocs.io/en/la ...

  3. Flask入门之结构重组(瘦身)-第13讲笔记

    1. pip list Flask 0.10.1 Flask-Bootstrap 3.3.5.6 Flask-SQLAlchemy 2 Flask-Script 2.0.5 Flask-WTF 0.1 ...

  4. Flask入门之Bootstrap介绍使用和Flask-Nav快速导航栏

    一.Bootstrap Bootstrap,来自 Twitter,是目前最受欢迎的前端框架. Python中,同样可以使用Bootstrap. 1. 导入Bootstrap库 from flask_b ...

  5. Flask入门之Pycharm写Hello Word

    在这里记录整理Flask入门的笔记! 今天讲讲使用Pycharm写一个Hello World 前提是已经安装好Pycharm,安装过程很简单,这里不赘述. 只放两个可以提供注册码的网站: Intell ...

  6. Flask入门和快速上手

    目录 Flask入门和快速上手 python三大主流框架对比 Flask安装 依赖 可选依赖 创建flask项目 flask最小应用--hello word 非法导入名称 调试模式 路由 唯一的 UR ...

  7. Flask 入门一( flask 框架和 flask-script 库)

    Flask 入门一( flask 框架 和 flask-script 库) 一.Flask框架: 1.简介 Flask是一个非常小的Python Web框架,被称为微型框架:只提供了一个稳健的核心,其 ...

  8. C#基础入门 十一

    C#基础入门 十一 复选框 复选框的应用--问卷调查 实现描述:通过问卷调查统计性别和下班后回家的方式,单击"提交"按钮,通过消息框显示所提交的信息.运行结果如下图所示(图27): ...

  9. Flask入门 flask结构 url_for 重定向(一)

    Flask入门(一) 1 安装虚拟环境Mac,linux sudo pip install virtualenv ​ ubuntu系统 sudo apt-get install python-virt ...

  10. Flask入门系列(转载)

    一.入门系列: Flask入门系列(一)–Hello World 项目开发中,经常要写一些小系统来辅助,比如监控系统,配置系统等等.用传统的Java写,太笨重了,连PHP都嫌麻烦.一直在寻找一个轻量级 ...

随机推荐

  1. 如何安装vue-devtool调试工具

    1.从git上下载工具压缩包,github下载地址:https://github.com/vuejs/vue-devtools: 2.打开cmd,切换到下载的文件目录下:npm install---- ...

  2. 如何快速高效率地学习Go语言

    要想快速高效率地掌握Go语言,关键是要通过不断写代码去训练,熟能生巧.方法是没问题的,但具体的路径呢?就像开车,能不能给个导航?我希望这篇文章能起到一个导航的作用,这里提供的路径,应该对很多人都适合. ...

  3. Python离线项目迁移部署

    最近遇到了一个场景:需要将Python项目文件打包到无法联网的主机上部署执行,本篇文章记录针对于该场景的处理方案. 说明: 源主机(可联网):安装了Python3和pip3 目标主机(无法联网):需安 ...

  4. 深入理解requestAnimationFrame并实现相册组件中的切换动画

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/12529885.html,多谢,=.=~ (如果对你有帮助的话请帮我点个赞啦) 通常情况下,我们利 ...

  5. 基于奇林软件kylinTOP工具的HTTP2协议的压力测试

    1.HTTP协议概述 说到http,那就应该先了解一下http协议的发展历史.关于http协议的历史,可以参考阮一峰老师的这篇博客文章HTTP 协议入门,里面介绍的比较详细了.简单来说http先后存在 ...

  6. linux下查看系统版本

    工作中我们会遇到安装软件需要知道linux是什么发行版本,话不多话上干货(按照我认为常用排序) 1. lsb_release -a 名词解释:LSB (Linux Standard Base) # 如 ...

  7. Journal of Proteome Research | Down-Regulation of a Male-Specific H3K4 Demethylase, KDM5D, Impairs Cardiomyocyte Differentiation (男性特有的H3K4脱甲基酶基因(KDM5D)下调会损伤心肌细胞分化) | (解读人:徐宁)

    文献名:Down-Regulation of a Male-Specific H3K4 Demethylase, KDM5D, Impairs Cardiomyocyte Differentiatio ...

  8. ASP.NET Core 3.x 中间件流程与路由体系

    中间件分类 ASP.NET Core 中间件的配置方法可以分为以上三种,对应的Helper方法分别是:Run(), Use(), Map(). Run(),使用Run调用中间件的时候,会直接返回一个响 ...

  9. POJ1703 Find them Catch them 关于分集合操作的正确性证明 种类并查集

    题目链接:http://poj.org/problem?id=1703 这道题和食物链那道题有异曲同工之处,都是要处理不同集合之间的关系,而并查集的功能是维护相同集合之间的关系.这道题中有两个不同的集 ...

  10. 深入Redis命令的执行过程

    深入Redis命令的执行过程 Redis 服务器: Redis 服务器实现与多个客户端的连接,并处理这些客户端发送过来的请求,同时保存客户端执行命令所产生的数据到数据库中.Redis 服务器依靠资源管 ...