利用python对mysql表做全局模糊搜索并分页实例
作者:Monster_ixx 发布时间:2024-01-20 05:29:47
标签:python,mysql,模糊,搜索,分页
在写django项目的时候,有的数据没有使用模型管理(数据表是动态添加的),所以要直接使用mysql。前端请求数据的时候可能会指定这几个参数:要请求的页号,页大小,以及检索条件。
"""
tableName: 表名
pageNum: 请求的页的编号
pageSize: 每一页的大小
searchInfo: 需要全局查询的信息
"""
def getMysqlData(tableName, pageNum, pageSize, searchInfo):
# 使用MySQLdb获取的mysql游标
cursor = getCursor()
# 用以获取列标题
colSql = 'select * from {} limit 1'.format(tableName)
cursor.execute(colSql)
columns = [col[0] for col in cursor.description]
# 转化查询信息为sql
searchCondition = ','.join(columns)
searchInfo = "WHERE CONCAT({}) like '%{}%'".format(searchCondition, searchInfo)
# 用以获取总数
totalSql = "select count(*) from {} {};".format(tableName, searchInfo)
cursor.execute(totalSql)
total = cursor.fetchone()[0]
# 用以获取具体数据
limit1 = (pageNum - 1) * pageSize
limit2 = pageSize
dataSql = "select * from {} {} limit {},{};".format(tableName, searchInfo, limit1, limit2)
cursor.execute(dataSql)
data = [
dict(zip(columns, row))
for row in cursor.fetchall()
]
return (total, columns, data)
"""
total: 符合条件的数据总数
columns: 字段名列表
['字段名1', '字段名2', ...]
data: 数据对象列表
[{'字段名1': 数据1,'字段名2':数据1, ...},{'字段名1': 数据2, '字段名2': 数据2, ...}, ...]
"""
补充知识:django 分页查询搜索--传递查询参数,翻页时带上查询参数
django在分页查询的时候,翻页时,v层要传递查询参数,相应的html翻页连接也要带上查询参数
直接上代码
view:
@login_required
def search_name(request):
username = request.session.get('user')
search_name = request.GET.get('name')
if search_name == None:
search_name = request.GET.get('name')
event_list = Event.objects.filter(name__contains=search_name)
paginator = Paginator(event_list, 2)
page = request.GET.get('page')
try:
contacts = paginator.page(page)
except PageNotAnInteger:
# 如果page不是整数,取第一页面数据
contacts = paginator.page(1)
except EmptyPage:
# 如果page不在范围内,则返回最后一页数据
contacts = paginator.page(paginator.num_pages)
return render(request,'event_manage.html',{'user':username,'events':contacts,'name':search_name})
html:
<!--列表分页器-->
<div class="pagination">
<span class="step-links">
{% if events.has_previous %}
<a href="?page={{ events.previous_page_number }}&&name={{ name }}" rel="external nofollow" >previous</a>
{% endif %}
<span class="current">
Page {{ events.number }} of {{ events.paginator.num_pages }}
</span>
{% if events.has_next %}
<a href="?page={{ events.next_page_number }}&name={{ name }}" rel="external nofollow" >next</a>
{% endif %}
</span>
</div>
{% include 'include/pager.html' %}
来源:https://blog.csdn.net/Monster_ixx/article/details/105056756


猜你喜欢
- 实现的思路:将准备好的图片通过opencv读取出来,并将其设置好帧数等参数后合成为无声视频。最后通过moviepy编辑视频将背景音乐加入到视
- 而标准的事件触发可以使用dispatchEvent方法。但现在FF5无法触发了A的默认行为了。如下 <!doctype html>
- 深入认识Python内建类型——dict注:本篇是根据教程学习记录的笔记,部分内容与教程是相同的,因
- < SCRIPT LANGUAGE="VBScript"> < 
- wxpython最为一款python GUI库,由于简单和轻便外加强大的功能而受到很多python爱好者的喜爱,pymysql作为pytho
- 如下所示:# 创建一个空的 DataFramedf_empty = pd.DataFrame()#或者df_empty = pd.DataF
- 先给大家介绍下sqlserver给表添加新字段、给表和字段添加备注、更新备注及查询备注,代码如下所示:-- 添加新字段及字段备注的语法USE
- 因此,在我接触那么多种语言当中,asp是最不严格的一种,是对程序员要求最低的一种。 昨天测试了asp.net、php和asp的运行速度比较,
- 本文实例讲述了Python实现的读写json文件功能。分享给大家供大家参考,具体如下:相比java,python对json文件的处理就简单很
- 目录前后端传输数据的编码格式Ajax提交urlencoded格式数据Ajax通过FormData上传文件Ajax提交Json格式数据Ajax
- unplugin-auto-import的配置和eslint报错解决先上官网:unplugin-auto-importunplugin-au
- 一、原理概述Query Cache就是把“查询返回的结果”缓存起来。但是,仅仅只是缓存“查询返回的结果”,其实是不准确的,Query Cac
- 一、下载xlsx插件npm i xlsx二、通过element-ui组件的upload组件上传文件<el-upload
- 一.摘要做接口自动化测试时,常常需要使用python发送一些json内容的接口报文,如果使用urlencode对内容进行编码解析并发送请求,
- 前言H2数据库是一个开源的关系型数据库。H2采用java语言编写,不受平台的限制,同时支持网络版和嵌入式版本,有比较好的兼容性,支持相当标准
- 使用attachEvent对同一事件进行多次绑定,这是解决事件函数定义冲突的重要方法。但是在IE中,函数内的this指针并没有指向被绑定元素
- 基于 SpringBoot与SpringSecurity整合 案例的修改:数据库 user 表注,密码是由 BCrypt 算法加密对应用户名
- 词法分析(Lexical Analysis):分析由字符组成的单词是否合法,如果没有问题的话,则产生一个单词流。 语法分析(Syntacti
- 测试异常情况-- 1. 查询张三余额select * from account where name = '张三';-- 2
- 本文实例讲述了微信小程序实现获取自己所处位置的经纬度坐标功能。分享给大家供大家参考,具体如下:1、效果展示2、关键代码index.wxml布