利用python对mysql表做全局模糊搜索并分页实例


Posted in Python onJuly 12, 2020

在写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' %}

以上这篇利用python对mysql表做全局模糊搜索并分页实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用python实现baidu hi自动登录的代码
Feb 10 Python
python操作mysql中文显示乱码的解决方法
Oct 11 Python
Python运算符重载详解及实例代码
Mar 07 Python
浅析Python 读取图像文件的性能对比
Mar 07 Python
Python3.5装饰器原理及应用实例详解
Apr 30 Python
Python的log日志功能及设置方法
Jul 11 Python
实例详解Python装饰器与闭包
Jul 29 Python
python通过移动端访问查看电脑界面
Jan 06 Python
Python通过2种方法输出带颜色字体
Mar 02 Python
pip安装tensorflow的坑的解决
Apr 19 Python
Python requests及aiohttp速度对比代码实例
Jul 16 Python
深入了解Python 方法之类方法 &amp; 静态方法
Aug 17 Python
django美化后台django-suit的安装配置操作
Jul 12 #Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 #Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 #Python
django template实现定义临时变量,自定义赋值、自增实例
Jul 12 #Python
Django后端分离 使用element-ui文件上传方式
Jul 12 #Python
PyQt5-QDateEdit的简单使用操作
Jul 12 #Python
Python logging日志模块 配置文件方式
Jul 12 #Python
You might like
substr()函数中文版
2006/10/09 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
python3常用的数据清洗方法(小结)
2019/10/31 Python
python3-flask-3将信息写入日志的实操方法
2019/11/12 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
python多线程使用方法实例详解
2019/12/30 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
keras在构建LSTM模型时对变长序列的处理操作
2020/06/29 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
Ado与Ado.net的相同与不同
2014/12/08 面试题
大学班级干部的自我评价分享
2014/02/10 职场文书
正科级干部考察材料
2014/05/29 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
领导干部保密承诺书
2014/08/30 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
入党团支部推荐意见
2015/06/02 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
python计算列表元素与乘积详情
2022/08/05 Python