1. import flask,json,pymysql
  2. from flask import request, jsonify, Response
  3. from datetime import datetime
  4. from flask_cors import CORS
  5.  
  6. db = pymysql.Connect(
  7. host='localhost',
  8. port=3306,
  9. user='root',
  10. passwd='24576946',
  11. db='school',
  12. )
  13.  
  14. cursor = db.cursor()
  15.  
  16. server = flask.Flask(__name__)
  17.  
  18. #允许跨域访问
  19. CORS(server, resources=r'/*')
  20. class JSONResponse(Response):
  21. @classmethod
  22. def force_type(cls, response, environ=None):
  23. if isinstance(response, (list, dict)):
  24. response = jsonify(response)
  25. response.headers['Access-Control-Allow-Credentials'] = 'true'
  26. response.headers['Access-Control-Allow-Origin'] = '*'
  27. response.headers['Access-Control-Allow-Methods'] = 'PUT,GET,POST,DELETE'
  28. response.headers['Access-Control-Allow-Headers'] = 'X-Requested-With'
  29. return super(Response, cls).force_type(response, environ)
  30. server.response_class = JSONResponse
  31.  
  32. #查询成绩列表
  33. @server.route('/grade',methods=['get'])
  34. def grade():
  35.  
  36. sql = "SELECT id,name,email,point,regdate FROM grade"
  37. cursor.execute(sql)
  38. res = cursor.fetchall()
  39.  
  40. keys = ['id','name','email','point','regdate']
  41. arr = []
  42. for index,item in enumerate(res):
  43. dict1 = {}
  44. for indexd,itemd in enumerate(item):
  45. if keys[indexd] == 'regdate':
  46. print(itemd)
  47. dict1[keys[indexd]] = itemd.strftime('%Y-%m-%d %H:%M')
  48. else:
  49. dict1[keys[indexd]] = itemd
  50. arr.append(dict1)
  51. return json.dumps(arr,ensure_ascii=False)
  52.  
  53. #添加单个成绩
  54. @server.route('/grade',methods=['post'])
  55. def add():
  56. option = json.loads(request.get_data())
  57.  
  58. if option['name'] == '':
  59. return jsonify({"code": 500,"error":'name不能为空!'})
  60.  
  61. sql = "INSERT INTO grade (name, email, point, regdate) VALUES ( '%s', '%s', '%d','%s' )"
  62. data = (option['name'], option['email'], option['point'],datetime.strftime(datetime.now(),'%Y-%m-%d %H:%M'))
  63. cursor.execute(sql % data)
  64. db.commit()
  65.  
  66. return jsonify({"code": 200,"data":{"name": option['name'], "email": option['email'], "point": option['point']}})
  67. # add()
  68.  
  69. #查询单个成绩
  70. @server.route('/grade/<int:post_id>',methods=['get'])
  71. def search(post_id):
  72. print(post_id)
  73.  
  74. sql = "SELECT id,name,email,point,regdate FROM grade WHERE id = %s" % (post_id)
  75. cursor.execute(sql)
  76. res = cursor.fetchone()
  77.  
  78. keys = ['id','name','email','point','regdate']
  79. dict1 = {}
  80. for index,item in enumerate(res):
  81. if keys[index] == 'regdate':
  82. dict1[keys[index]] = item.strftime('%Y-%m-%d %H:%M')
  83. else:
  84. dict1[keys[index]] = item
  85.  
  86. return json.dumps(dict1,ensure_ascii=False)
  87.  
  88. #删除单个成绩
  89. @server.route('/grade/<int:post_id>',methods=['post'])
  90. def delete(post_id):
  91. print(post_id)
  92.  
  93. sql = "DELETE FROM grade WHERE id = %s" % (post_id)
  94. cursor.execute(sql)
  95. res = cursor.fetchone()
  96.  
  97. return jsonify({"code":200,"data":'删除成功!'})
  98. # delete(24)
  99.  
  100. #查询老师列表
  101. @server.route('/teacher',methods=['get'])
  102. def getTeacher():
  103. sql = "SELECT id,name,description,student,regdate FROM teacher"
  104. cursor.execute(sql)
  105. res = cursor.fetchall()
  106.  
  107. keys = ['id','name','description','student','regdate']
  108. arr = []
  109. for index,item in enumerate(res):
  110. dict1 = {}
  111. for indexd,itemd in enumerate(item):
  112. if keys[indexd] == 'regdate':
  113. print(itemd)
  114. dict1[keys[indexd]] = itemd.strftime('%Y-%m-%d %H:%M')
  115. else:
  116. dict1[keys[indexd]] = itemd
  117. arr.append(dict1)
  118.  
  119. return json.dumps(arr,ensure_ascii=False)
  120.  
  121. #查询老师有哪几个学生
  122. @server.route('/teacher/<int:teacher_id>',methods=['get'])
  123. def searchStudent(teacher_id):
  124. student_id = request.args.get('studentId')
  125. sql = "SELECT id,name,email,point FROM grade WHERE id = %s" % (student_id)
  126. cursor.execute(sql)
  127. res = cursor.fetchone()
  128.  
  129. keys = ['id','name','email','point']
  130. dict1 = {}
  131. for index,item in enumerate(res):
  132. dict1[keys[index]] = item
  133.  
  134. return json.dumps(dict1,ensure_ascii=False)
  135.  
  136. server.run(port=9003,debug=True,host='192.168.1.195')
  137.  
  138. # 关闭连接
  139. cursor.close()
  140. 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. AT4119-[ARC096C]Everything on It【斯特林数,容斥】

    正题 题目链接:https://www.luogu.com.cn/problem/AT4119 题目大意 一个集合\(S=\{k\in[1,n]\cup N\}\),它的所有子集作为元素组成的集合中要 ...

  2. 我的Python学习记录

    Python日期时间处理:time模块.datetime模块 Python提供了两个标准日期时间处理模块:--time.datetime模块. 那么,这两个模块的功能有什么相同和共同之处呢? 一般来说 ...

  3. VUE -input输入框字母转大写

    示例: 输入自动转--->大写 <input type="text" placeholder="请输入证件号码" maxlength="1 ...

  4. div标签的理解

    在HTML里面,div标签是一个块状元素,不会和其他元素排列在同一行,会默认和下面的元素换行,但是如果我们需要把几个div标签排在同一行,需要怎么做? 第一种:修改块状元素 源码: <div i ...

  5. netty 处理客户端连接

    Netty如何处理连接事件 上文讲了Netty如何绑定端口,现在我们来阅读下netty如何处理connect事件.上文我们说了NioEventLoop启动后不断去调用select的事件,当客户端连接时 ...

  6. 从C过渡到C++需要了解的“新特性”

    第一个C++程序 #include <iostream> using namespace std; //编译指令 int main() { cout << "Hell ...

  7. 虚拟机研究系列-「GC本质底层机制」SafePoint的深入分析和底层原理探究指南

    SafePoint前提介绍 在高度优化的现代JVM里,Safepoint有几种不同的用法.GC safepoint是最常见.大家听说得最多的,但还有deoptimization safepoint也很 ...

  8. 【UE4 C++】打印字符串与输出日志

    打印屏幕 默认打印屏幕 // 打印至屏幕 FString screenMessage = "(AddOnScreenDebugMessage) Hello world!"; GEn ...

  9. Noip模拟31 2021.8.5

    T1 Game 当时先胡了一发$\textit{Next Permutation}$... 然后想正解,只想到贪心能求最大得分,然后就不会了.. 然后就甩个二十分的走了... 正解的最大得分(叫它$k ...

  10. 2021.8.19考试总结[NOIP模拟44]

    T1 emotional flutter 把脚长合到黑条中. 每个黑条可以映射到统一区间,实际操作就是左右端点取模.长度大于$k$时显然不合法. 然后检查一遍区间内有没有不被黑条覆盖的点即可. 区间端 ...