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都嫌麻烦.一直在寻找一个轻量级 ...
随机推荐
- (转)windows宿主机,ubuntu虚拟机下的上网设置(有线网络和无线网络)
转自:http://hi.baidu.com/puppywst/item/d9f73734856e2af32684f4e3 虚拟机下ubuntu共享方式上网: 有线网络 在有线网络的条件下,vmwar ...
- list的常用方法
注:lst为定义的列表变量,如:lst = [1, 2, 3, 4, 5] 增: 1. lst.append() 末尾追加 lst = [1, 2, 3, 4, 5, 6] lst.append( ...
- Rational Rose 2007破解版
首先下载好软件,链接在这里 链接:https://pan.baidu.com/s/1op-W-ZX1tqefHffs3m-r0A 提取码:0jwm 这里面包含了Rational Rose 2007版的 ...
- DOM-XSS攻击原理与防御
XSS的中文名称叫跨站脚本,是WEB漏洞中比较常见的一种,特点就是可以将恶意HTML/JavaScript代码注入到受害用户浏览的网页上,从而达到劫持用户会话的目的.XSS根据恶意脚本的传递方式可以分 ...
- Natas9 Writeup(命令注入)
Natas9: 审计源码,发现关键代码: $key = ""; if(array_key_exists("needle", $_REQUEST)) { $key ...
- 手写简单IOC
ReflectUtils.java (反射工具类) package top.icss.ioc; import java.io.File; import java.io.FileFilter; impo ...
- React Native新项目启动报错'React/RCTBridgeDelegate.h' file not found
React Native版本:0.60.4 解决方法: cd ios pod deintegrate pod install 然后重新启动就好了(示例页面变样了( ⊙ o ⊙ )) END------ ...
- 熟悉使用Webdriver ---- 商品自动秒杀
前几天下载了Webdriver模块,经过简单的研究,发现这个模块可以做很多有意思的事情,下面我就用一个实例来理解webdriver的此处操作(完整代码在文章末尾). *浏览器:谷歌chrome浏览器 ...
- 【C++】Strassen算法代码
本文仅代码,无理论解释 实话实说,我觉得这个算法在C系列的语言下,简直垃圾到爆炸--毕竟是一群完全不懂程序数学家对着纸弄出来的,看起来好像非常的有用,实际上耗时是非常爆炸的. 但是<算法导论&g ...
- 搜索引擎如何检索结果:Python和spaCy信息提取简介
概览 像Google这样的搜索引擎如何理解我们的查询并提供相关结果? 了解信息提取的概念 我们将使用流行的spaCy库在Python中进行信息提取 介绍 作为一个数据科学家,在日常工作中,我严重依赖搜 ...