利用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 ljust rjust center输出
Sep 06 Python
python使用rsa加密算法模块模拟新浪微博登录
Jan 22 Python
python中常用检测字符串相关函数汇总
Apr 15 Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 Python
python中pika模块问题的深入探究
Oct 13 Python
Python 读取串口数据,动态绘图的示例
Jul 02 Python
python 图像的离散傅立叶变换实例
Jan 02 Python
pytorch动态网络以及权重共享实例
Jan 06 Python
tensorflow 报错unitialized value的解决方法
Feb 06 Python
深入了解Python enumerate和zip
Jul 16 Python
Python实现淘宝秒杀功能的示例代码
Jan 19 Python
SpringBoot首页设置解析(推荐)
Feb 11 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
php jsonp单引号转义
2014/11/23 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
2016/03/10 PHP
Laravel5.7 Eloquent ORM快速入门详解
2019/04/12 PHP
文本链接逐个出现的js脚本
2007/12/12 Javascript
JavaScript中的Screen屏幕对象
2008/01/16 Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
2013/04/15 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
js中使用使用原型(prototype)定义方法的好处详解
2016/07/04 Javascript
jQuery实现的无缝广告图片左右滚动功能详解
2016/12/24 Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
2017/06/19 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
微信小程序如何使用globalData的方法
2019/06/06 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
Python实现把回车符\r\n转换成\n
2015/04/23 Python
Python编程把二叉树打印成多行代码
2018/01/04 Python
django加载本地html的方法
2018/05/27 Python
基于Python开发chrome插件的方法分析
2018/07/07 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
Python八皇后问题解答过程详解
2019/07/29 Python
Python测试模块doctest使用解析
2019/08/10 Python
Python实现直播推流效果
2019/11/26 Python
html5实现滑块功能之type=&quot;range&quot;属性
2020/02/18 HTML / CSS
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
自荐信格式
2013/12/01 职场文书
采购员的工作职责
2013/12/26 职场文书
毕业生护理专业个人求职信范文
2014/01/04 职场文书
促销活动总结模板
2014/07/01 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
改进工作作风心得体会
2016/01/23 职场文书
导游词之镜泊湖
2019/12/09 职场文书
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB
Python采集股票数据并制作可视化柱状图
2022/04/04 Python