python编写API接口实现数据筛选、查询与分页

目录

一、背景

二、代码


一、背景

由于系统上需要分页展示数据,并提供按字段筛选数据的功能,于是需要我写个接口,以供前端使用。

接口可以通过python flask框架实现。Flask是一个轻量级的Web框架,它提供了足够的灵活性来构建定制的RESTful API。开发者可以根据需求轻松地设计和实现接口。

数据的查询可以通过pymysql连接MySQL数据库实现。数据的筛选和分页可以通过堆叠where条件、row_number实现。

二、代码

以下代码中连接的数据库用的是我电脑本地之前做学生管理系统的测试数据,可自行替换为自己的数据库、表、字段。

import flask
from flask import request
import datetime
from flask_cors import CORS
from flask import jsonify
import numpy as np
import pandas as pd
import pymysqlserver=flask.Flask(__name__)
# 解决跨域请求资源被拦截问题
CORS(server,supports_credentials=True,resources=r'/*')#从数据库读取数据
def get_data(sql,host,user,password,database,port):conn = pymysql.connect(host=host,user=user,password=password,database=database,port=port,charset='utf8',cursorclass=pymysql.cursors.DictCursor,connect_timeout=60)cur = conn.cursor()cur.execute(sql)data = cur.fetchall()conn.close()cur.close()return data#编写SQL
def build_sql(beginTime, endTime, name, data_type, pageNum, pageSize):conditions = []if beginTime and endTime:conditions.append("create_time>='{}' and create_time<='{}'".format(beginTime, endTime))if name:conditions.append("name like '%{}%'".format(name))if data_type:conditions.append("data_type='{}'".format(data_type))where_clause = " and ".join(conditions)sql = '''select id,name,t_class_id,create_time,data_typefrom (select id,name,t_class_id,create_time,data_type ,row_number() over(order by create_time desc ) as rnfrom student_score_student where 1=1{}) twhere t.rn>({}-1)*{}and t.rn<={}*{}'''.format('and ' + where_clause if where_clause else '', pageNum, pageSize, pageNum, pageSize)return sql@server.route('/DataList', methods=['GET','POST'])
def warningList():data = request.jsonbeginTime = data.get('beginTime')endTime = data.get('endTime')name = data.get('name')data_type = data.get('data_type')pageNum = int(data.get('pageNum', 1))pageSize = int(data.get('pageSize', 10))if beginTime and endTime:try:date_format = "%Y-%m-%d %H:%M:%S"beginTime = datetime.strptime(beginTime, date_format).strftime(date_format)endTime = datetime.strptime(endTime, date_format).strftime(date_format)except Exception:return jsonify(code='401', message='时间格式错误', data=None)sql = build_sql(beginTime, endTime, name, data_type, pageNum, pageSize)data = get_data(sql, 'localhost', 'root', None, 'auth_system', 3306)data_str = [{k: str(v) if k == 'create_time' else v for k, v in d.items()} for d in data]sql_count = "select count(1) as num from student_score_student"num = get_data(sql_count, 'localhost', 'root', None, 'auth_system', 3306)[0]['num']return jsonify(code='200', message='请求成功', data={'list': data_str, 'num': num})if __name__ == '__main__':server.run(debug=True, port=5006, host='0.0.0.0')

启动接口:

python xxx.py

测试接口:

返回数据:

{"code": "200","data": {"list": [{"create_time": "2023-03-06 20:15:56.916803","data_type": 0,"id": 9394,"name": "小吴1385","t_class_id": 24},{"create_time": "2023-03-06 20:15:56.904704","data_type": 0,"id": 9393,"name": "小吴1384","t_class_id": 24},{"create_time": "2023-03-06 20:15:56.892745","data_type": 0,"id": 9392,"name": "小吴1383","t_class_id": 24},{"create_time": "2023-03-06 20:15:56.881069","data_type": 0,"id": 9391,"name": "小吴1382","t_class_id": 24},{"create_time": "2023-03-06 20:15:56.869990","data_type": 0,"id": 9390,"name": "小吴1381","t_class_id": 24},{"create_time": "2023-03-06 20:15:56.857891","data_type": 0,"id": 9389,"name": "小吴1380","t_class_id": 24},{"create_time": "2023-03-06 20:15:56.846088","data_type": 0,"id": 9388,"name": "小吴1379","t_class_id": 24},{"create_time": "2023-03-06 20:15:56.834624","data_type": 0,"id": 9387,"name": "小吴1378","t_class_id": 24},{"create_time": "2023-03-06 20:15:56.823055","data_type": 0,"id": 9386,"name": "小吴1377","t_class_id": 24},{"create_time": "2023-03-06 20:15:56.811648","data_type": 0,"id": 9385,"name": "小吴1376","t_class_id": 24}],"num": 1292},"message": "请求成功"
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/770580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学会Sass的高级用法,减少样式冗余

在当今的前端开发领域&#xff0c;样式表语言的进步已经显著提升了代码组织性和可维护性。Sass&#xff08;Syntactically Awesome Style Sheets&#xff09;作为CSS预处理器的翘楚&#xff0c;以其强大的变量、嵌套规则、混合宏&#xff08;mixin&#xff09;、循环和函数等高…

STM32学习笔记(6_5)- TIM定时器的输出捕获原理

无人问津也好&#xff0c;技不如人也罢&#xff0c;都应静下心来&#xff0c;去做该做的事。 最近在学STM32&#xff0c;所以也开贴记录一下主要内容&#xff0c;省的过目即忘。视频教程为江科大&#xff08;改名江协科技&#xff09;&#xff0c;网站jiangxiekeji.com 现在开…

ASR-LLM-TTS 大模型对话实现案例;语音识别、大模型对话、声音生成

参考:https://blog.csdn.net/weixin_42357472/article/details/136305123(llm+tts) https://blog.csdn.net/weixin_42357472/article/details/136411769 (asr+vad) 这里LLM用的是chatglm;电脑声音播报用的playsound 代码: ##运行 python main.pymain.py from multipro…

mac电脑下安装和启动nginx

一,安装homebrew 必须安装了homebrew&#xff0c;可在终端输入命令brew -v查看是否已经安装,没安装的话安装一下: 如果未安装先安装&#xff08;网上很多文章&#xff09; 二,查看nginx是否存在 使用命令:brew search nginx查看nginx是否存在: 不存在的话,就使用brew inst…

mac 系统如何生成秘钥

1.打开终端&#xff0c;输入 cd ~/.ssh 进入.ssh目录&#xff0c;输入 ls 检查是否已经存在SSH密钥。如果看到类似 id_rsa.pub 的文件&#xff0c;说明已经有一对公钥和私钥&#xff0c;不用新建&#xff0c;直接查看就可以&#xff0c;如果没有需要生成新的密钥。 2.在终端输…

(三)Qt+OpenCV调用海康工业相机SDK抓拍示例

系列文章目录 提示&#xff1a;这里是该系列文章的所有文章的目录 第一章&#xff1a; &#xff08;一&#xff09;QtOpenCV调用海康工业相机SDK示例开发 第二章&#xff1a; &#xff08;二&#xff09;Qt多线程实现海康工业相机图像实时采集 第三章&#xff1a; &#xff08;…

许可型DeFi 项目NEOPIN:在合规的框架下推动DeFi的创新

合规化已成 DeFi 的主流方向 过去的几年里&#xff0c;全球金融市场见证了 DeFi 的快速增长。DeFi 通过提供无需中介的交易和借款等金融服务&#xff0c;为用户带来前所未有的便利。然而&#xff0c;其匿名性和去中心化的特性也为监管和安全带来挑战 —— DeFi项目的透明度不足…

C#自定义控件 生成 与 加入到项目

C#自定义控件生成 在C#中&#xff0c;自定义控件通常是通过继承现有的控件类&#xff08;如UserControl、Form等&#xff09;并添加或修改其属性和方法来实现的。以下是一个简单的示例&#xff0c;演示如何创建一个自定义控件&#xff1a; 首先&#xff0c;创建一个新的Window…

荟萃分析R Meta-Analyses 1

参考&#xff1a;Harrer, M.、Cuijpers, P.、Furukawa, TA 和 Ebert, DD (2021)。 使用 R 进行荟萃分析&#xff1a;实践指南。佛罗里达州博卡拉顿和伦敦&#xff1a;Chapman & Hall/CRC Press。 ISBN 978-0-367-61007-4。 1.1什么是荟萃分析&#xff1f; 它的创始人之一 G…

电脑如何更新AMD独立显卡驱动?安装官方驱动的方法来了!

前言 有小伙伴在电脑上安装了独立显卡之后&#xff0c;总会用驱动人生或者驱动精灵等软件给独立显卡安装驱动。这种安装方法并不能说是错的&#xff0c;反正能用就行。 安装官方驱动的办法其实很简单&#xff0c;现在独立显卡一共就那么几家&#xff0c;最常见的显卡就是Nvidi…

我们是如何在 IDE 中设计 AutoDev 的 AI 编程开发智能体语言与框架?

上周微软发布了自家的 AI 编程和软件开发智能体框架&#xff1a;AutoDev&#xff0c;其与我们开发的 IDE 插件 AutoDev 有颇多的相似之处&#xff0c;特别是一些设计思路&#xff0c;以及在对于辅助软件开发任务的智能体以及一些基础设施上。 稍有不同的是&#xff1a; 交互介质…

随手笔记——禾赛Pandar64雷达旋转方向及坐标系定义

随手笔记——禾赛Pandar64雷达旋转方向及坐标系定义 手册下载

Maven学习记录

一、简介 1. Maven&#xff1a; 基于 Java 平台的项目管理和整合工具&#xff0c;将项目的开发和管理过程抽象成一个项目对象模型&#xff08;POM&#xff09;。开发人员只需要做一些简单的配置&#xff0c;Maven 就可以自动完成项目的编译、测试、打包、发布以及部署等工作。…

【NLP学习记录】Embedding和EmbeddingBag

Embedding与EmbeddingBag详解 ●&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 ●&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 ●&#x1f680; 文章来源&#xff1a;K同学的学习圈子1、Embedding详解 Embedding是Pytorch中最基本…

备考ICA----Istio实验8---请求超时 Request Timeouts 实验

备考ICA----Istio实验8—请求超时 Request Timeouts 实验 1. 重置bookinfo环境 kubectl delete all --all --now kubectl delete dr --all kubectl delete vs --all kubectl delete gw --all kubectl apply -f istio/samples/bookinfo/platform/kube/bookinfo.yaml kubectl a…

STM32-01基于HAL库(CubeMX+MDK+Proteus)仿真开发环境搭建(LED点亮测试实例)

STM32-01基于HAL库&#xff08;CubeMXMDKProteus&#xff09;仿真开发环境搭建&#xff08;LED点亮测试实例&#xff09; 一、 开发工具版本列表二、安装过程三、实例测试&#xff08;点亮单个LED&#xff09;0、功能需求分析1、Proteus绘制电路原理图2、STMCubeMX 配置引脚及模…

微服务day07 -- 搜索引擎 ( 数据聚合 + 自动补全 + 数据同步 + ES集群 )

1.数据聚合 聚合&#xff08;aggregations&#xff09;可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 什么品牌的手机最受欢迎&#xff1f; 这些手机的平均价格、最高价格、最低价格&#xff1f; 这些手机每月的销售情况如何&#xff1f; 实现这些…

【C语言基础】:内存操作函数

文章目录 一、memcpy函数的使用和模拟实现1.1 memcpy函数的使用1.2 memcpy函数的模拟实现 二、memmove函数的使用和模拟实现2.1 memmove函数的使用2.2 memmove函数的模拟实现 三、memset函数的使用3.1 menset函数的使用 四、memcmp函数的使用4.1 memcmp函数的使用 学海无涯苦作…

Prompt提示工程上手指南:基础原理及实践(四)-检索增强生成(RAG)策略下的Prompt

前言 此篇文章已经是本系列的第四篇文章&#xff0c;意味着我们已经进入了Prompt工程的深水区&#xff0c;掌握的知识和技术都在不断提高&#xff0c;对于Prompt的技巧策略也不能只局限于局部运用而要适应LLM大模型的整体框架去进行改进休整。较为主流的LLM模型框架设计可以基…

图解Kafka架构学习笔记(二)

kafka的存储机制 https://segmentfault.com/a/1190000021824942 https://www.lin2j.tech/md/middleware/kafka/Kafka%E7%B3%BB%E5%88%97%E4%B8%83%E5%AD%98%E5%82%A8%E6%9C%BA%E5%88%B6.html https://tech.meituan.com/2015/01/13/kafka-fs-design-theory.html https://feiz…