import flask,json,pymysql
from flask import request, jsonify, Response
from datetime import datetime
from flask_cors import CORS db = pymysql.Connect(
host='localhost',
port=3306,
user='root',
passwd='24576946',
db='school',
) cursor = db.cursor() server = flask.Flask(__name__) #允许跨域访问
CORS(server, resources=r'/*')
class JSONResponse(Response):
@classmethod
def force_type(cls, response, environ=None):
if isinstance(response, (list, dict)):
response = jsonify(response)
response.headers['Access-Control-Allow-Credentials'] = 'true'
response.headers['Access-Control-Allow-Origin'] = '*'
response.headers['Access-Control-Allow-Methods'] = 'PUT,GET,POST,DELETE'
response.headers['Access-Control-Allow-Headers'] = 'X-Requested-With'
return super(Response, cls).force_type(response, environ)
server.response_class = JSONResponse #查询成绩列表
@server.route('/grade',methods=['get'])
def grade(): sql = "SELECT id,name,email,point,regdate FROM grade"
cursor.execute(sql)
res = cursor.fetchall() keys = ['id','name','email','point','regdate']
arr = []
for index,item in enumerate(res):
dict1 = {}
for indexd,itemd in enumerate(item):
if keys[indexd] == 'regdate':
print(itemd)
dict1[keys[indexd]] = itemd.strftime('%Y-%m-%d %H:%M')
else:
dict1[keys[indexd]] = itemd
arr.append(dict1)
return json.dumps(arr,ensure_ascii=False) #添加单个成绩
@server.route('/grade',methods=['post'])
def add():
option = json.loads(request.get_data()) if option['name'] == '':
return jsonify({"code": 500,"error":'name不能为空!'}) sql = "INSERT INTO grade (name, email, point, regdate) VALUES ( '%s', '%s', '%d','%s' )"
data = (option['name'], option['email'], option['point'],datetime.strftime(datetime.now(),'%Y-%m-%d %H:%M'))
cursor.execute(sql % data)
db.commit() return jsonify({"code": 200,"data":{"name": option['name'], "email": option['email'], "point": option['point']}})
# add() #查询单个成绩
@server.route('/grade/<int:post_id>',methods=['get'])
def search(post_id):
print(post_id) sql = "SELECT id,name,email,point,regdate FROM grade WHERE id = %s" % (post_id)
cursor.execute(sql)
res = cursor.fetchone() keys = ['id','name','email','point','regdate']
dict1 = {}
for index,item in enumerate(res):
if keys[index] == 'regdate':
dict1[keys[index]] = item.strftime('%Y-%m-%d %H:%M')
else:
dict1[keys[index]] = item return json.dumps(dict1,ensure_ascii=False) #删除单个成绩
@server.route('/grade/<int:post_id>',methods=['post'])
def delete(post_id):
print(post_id) sql = "DELETE FROM grade WHERE id = %s" % (post_id)
cursor.execute(sql)
res = cursor.fetchone() return jsonify({"code":200,"data":'删除成功!'})
# delete(24) #查询老师列表
@server.route('/teacher',methods=['get'])
def getTeacher():
sql = "SELECT id,name,description,student,regdate FROM teacher"
cursor.execute(sql)
res = cursor.fetchall() keys = ['id','name','description','student','regdate']
arr = []
for index,item in enumerate(res):
dict1 = {}
for indexd,itemd in enumerate(item):
if keys[indexd] == 'regdate':
print(itemd)
dict1[keys[indexd]] = itemd.strftime('%Y-%m-%d %H:%M')
else:
dict1[keys[indexd]] = itemd
arr.append(dict1) return json.dumps(arr,ensure_ascii=False) #查询老师有哪几个学生
@server.route('/teacher/<int:teacher_id>',methods=['get'])
def searchStudent(teacher_id):
student_id = request.args.get('studentId')
sql = "SELECT id,name,email,point FROM grade WHERE id = %s" % (student_id)
cursor.execute(sql)
res = cursor.fetchone() keys = ['id','name','email','point']
dict1 = {}
for index,item in enumerate(res):
dict1[keys[index]] = item return json.dumps(dict1,ensure_ascii=False) server.run(port=9003,debug=True,host='192.168.1.195') # 关闭连接
cursor.close()
db.close()

Python基础(API接口测试)的更多相关文章

  1. Python 基础API

    针对python的os库一些API记录,觉得python的命名并不好,很多API看名字,并不知道具体功能是什么 1. os.path.basename() 得到文件名称,不包括路径,例子:/var/t ...

  2. 【2019.5.19】接口测试及python基础(一)

      一.接口 1.什么是接口: 简单的说,接口就是从数据库获取数据. 2.前端和后端: 2.1前端client: 对于web来说,打开的网页,我们所看到的就是前端,前端语言包括html.JS.CSS: ...

  3. python+requests+json 接口测试思路示例

    实际项目中用python脚本实现接口测试的步骤: 1 发送请求,获取响应  >>2 提取响应里的数据,对数据进行必要的处理  >>3 断言响应数据是否与预期一致 以豆瓣接口为例 ...

  4. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  5. Python基础+Pythonweb+Python扩展+Python选修四大专题 超强麦子学院Python35G视频教程

    [保持在百度网盘中的, 可以在观看,嘿嘿 内容有点多,要想下载, 回复后就可以查看下载地址,资源收集不易,请好好珍惜] 下载地址:http://www.fu83.cc/ 感觉文章好,可以小手一抖 -- ...

  6. python基础——定制类

    python基础——定制类 看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方 ...

  7. python 基础知识(一)

    python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...

  8. Day7 - Python基础7 面向对象编程进阶

    Python之路,Day7 - 面向对象编程进阶   本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个 ...

  9. 工程脚本插件方案 - c集成Python基础篇(VC++嵌入Python)

    序: 为什么要集成脚本,怎么在工程中集成Python脚本. 在做比较大型的工程时,一般都会分核心层和业务层.核心层要求实现高效和稳定的基础功能,并提供调用接口供业务层调用的一种标准的框架划分.在实际中 ...

  10. &lt;&lt;Python基础课程&gt;&gt;学习笔记 | 文章13章 | 数据库支持

    备注:本章介绍了比较简单,只是比较使用样品,主要假设是把握连接,利用数据库.和SQLite做演示样本 ------ Python数据库API 为了解决Python中各种数据库模块间的兼容问题,如今已经 ...

随机推荐

  1. 深入浅出WPF-11.Template(模板)02

    模板 DataTemplate和ControlTemplate的关系 通过上面的内容,控件只是一个数据和行为的载体,是一个抽象的概念,至于它长什么样子,或者它的数据是怎么展示的,都是由模板生成的.决定 ...

  2. bootstrap inputfile 使用-上传,回显

    近期用bootstrap 做前端的上传,功能涉及到上传时就是召网上的教程随便弄一搜一大把,但是做到修改页面时候不知道页面该如何回显,折腾了一阵子才完成遂记录下来希望能给看到的小伙伴有点启发吧. 首先是 ...

  3. Mybatis里@InsertProvider、@UpdateProvider方法里使用if test标签

    例如: ··· insert into TEST1(<if test="base_id!=null and base_id!=''">base_id,</if&g ...

  4. 怒肝 Linux 学习路线,这回不难

    Linux 学习路线 by 鱼皮. 原创不易,请勿抄袭,违者必究! 大家好,我是鱼皮,又花 1 周肝出了 Linux 学习资料全家桶,包括学习路线.命令手册.视频.书籍.文档.实战教程.社区.工具.大 ...

  5. React实现组件全屏化

    介绍 本文基于React+antd,给大家演示一个完整的全屏demo. 起因是开发今天给我提了一个sql编辑器输入框比较小,不支持放大,不太方便.希望能够全屏显示,联想到自己以后可能也会需要,便研究并 ...

  6. 题解 [JSOI2011]柠檬

    题目传送门 题目大意 给出一个区间,每个点都有一个颜色,把这个区间分为许多块,每一块的权值为 \(\max\{s\times t^2\}\) ,其中 \(s\) 为某种颜色,\(t\) 为该颜色在该块 ...

  7. 2020.11.1--pta阶梯练习赛补题

    7-5 古风排版 中国的古人写文字,是从右向左竖向排版的.本题就请你编写程序,把一段文字按古风排版. 输入格式: 输入在第一行给出一个正整数N(<),是每一列的字符数.第二行给出一个长度不超过1 ...

  8. Java(36)IO流案例与总结

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228455.html 博客主页:https://www.cnblogs.com/testero ...

  9. Fikker 管理平台弱口令

    官网:www.fikker.com 应用介绍:Fikker 是一款面向 CDN/站长 的专业级网站缓存(Webcache)和反向代理服务器软件(Reverse Proxy Server). 发现过程: ...

  10. Codeforces Round #750 (Div. 2)

    Codeforces Round #750 (Div. 2) A. Luntik and Concerts 思路分析: 首先我们可以肯定的是a,b,c都大于等于1,所以我们先让它们自己抵消自己,最后a ...