Flask 入门 (十一)
上篇文章讲的是一对多,这篇文章应该说多对多了
但是多对多无法用两张表来实现,因为外键......,你懂,哈哈哈!,所以中间需要加一张表来实现
承接上文,修改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 入门 (十一)的更多相关文章
- 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 ...
- Flask入门HelloWorld
Flask入门HelloWorld Flask官网:http://flask.pocoo.org/ Flask中文翻译:http://dormousehole.readthedocs.io/en/la ...
- 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 ...
- Flask入门之Bootstrap介绍使用和Flask-Nav快速导航栏
一.Bootstrap Bootstrap,来自 Twitter,是目前最受欢迎的前端框架. Python中,同样可以使用Bootstrap. 1. 导入Bootstrap库 from flask_b ...
- Flask入门之Pycharm写Hello Word
在这里记录整理Flask入门的笔记! 今天讲讲使用Pycharm写一个Hello World 前提是已经安装好Pycharm,安装过程很简单,这里不赘述. 只放两个可以提供注册码的网站: Intell ...
- Flask入门和快速上手
目录 Flask入门和快速上手 python三大主流框架对比 Flask安装 依赖 可选依赖 创建flask项目 flask最小应用--hello word 非法导入名称 调试模式 路由 唯一的 UR ...
- Flask 入门一( flask 框架和 flask-script 库)
Flask 入门一( flask 框架 和 flask-script 库) 一.Flask框架: 1.简介 Flask是一个非常小的Python Web框架,被称为微型框架:只提供了一个稳健的核心,其 ...
- C#基础入门 十一
C#基础入门 十一 复选框 复选框的应用--问卷调查 实现描述:通过问卷调查统计性别和下班后回家的方式,单击"提交"按钮,通过消息框显示所提交的信息.运行结果如下图所示(图27): ...
- Flask入门 flask结构 url_for 重定向(一)
Flask入门(一) 1 安装虚拟环境Mac,linux sudo pip install virtualenv ubuntu系统 sudo apt-get install python-virt ...
- Flask入门系列(转载)
一.入门系列: Flask入门系列(一)–Hello World 项目开发中,经常要写一些小系统来辅助,比如监控系统,配置系统等等.用传统的Java写,太笨重了,连PHP都嫌麻烦.一直在寻找一个轻量级 ...
随机推荐
- 小程序post请求,后台接收不到数据的解决方法
wx.request({ url: 'myurl', method:'POST', dataType:'json', data: { mydata:mydata }, success(res) { c ...
- nodejs中的并发编程
从sleep的实现说起 在nodejs中,如果要实现sleep的功能主要是通过"setTimeout + promise"实现,也可以通过"循环空转"来解决.前 ...
- redis 持久化RDB、AOF
1.redis持久化简介 Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集合和有序集合.支持在服务器端计算集合 ...
- postman使用简介
postman进行Http类型的接口测试的功能测试(手工测试): 1.postman下载,解压,打开Chrome浏览器-->设置-->扩展程序-->勾选开发者模式-->加载已解 ...
- Untargeted lipidomics reveals specific lipid abnormality in nonfunctioning human pituitary adenomas 非靶向脂质组学揭示非功能人类脑垂体瘤中的特异性脂质 (解读人:胡丹丹)
文献名:Untargeted lipidomics reveals specific lipid abnormality in nonfunctioning human pituitary adeno ...
- Javascript的document对象
对象属性 document.title //设置文档标题等价于HTML的<title>标签 document.bgColor / ...
- 【Deep Learning读书笔记】深度学习中的概率论
本文首发自公众号:RAIS,期待你的关注. 前言 本系列文章为 <Deep Learning> 读书笔记,可以参看原书一起阅读,效果更佳. 概率论 机器学习中,往往需要大量处理不确定量,或 ...
- eNSP 交换机 路由器 PC 互连设计/实现
0.实验目的 1.掌握网络设计的原理与步骤: 2.掌握IP分配.网关设置原则: 3.了解路由协议的作用,掌握网络互联设备的作用和配置. 1.实验环境 环境:eNSP模拟器 版本信息:1.3.00.10 ...
- SpringFramework之IoC容器初始化
分析例子 启动类 Application,使用的是ClassPathXmlApplicationContext来加载xml文件 /** * @author jianw.li * @date 2020/ ...
- Nuget多项目批量打包上传服务器的简明教程
本篇不会介绍Nuget是什么,如何打包上传Nuget包,怎么搭建私有Nuget服务器.这些问题园子里都有相应的文章分享,这里不做过多阐述.另外本文假设你已经下载了Nuget.exe,并且已经设置好了环 ...