利用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版
Dec 07 Python
基于python的Tkinter实现一个简易计算器
Dec 31 Python
PyChar学习教程之自定义文件与代码模板详解
Jul 17 Python
Python+matplotlib实现华丽的文本框演示代码
Jan 22 Python
Python正则表达式实现简易计算器功能示例
May 07 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
Jul 05 Python
Python3.7实现验证码登录方式代码实例
Feb 14 Python
Python如何省略括号方法详解
Mar 21 Python
Django rest framework分页接口实现原理解析
Aug 21 Python
Python如何实现机器人聊天
Sep 10 Python
Django搭建项目实战与避坑细节详解
Dec 06 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无限分类(树形类)的深入分析
2013/06/02 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
php使用include 和require引入文件的区别
2017/02/16 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
jquery ready()的几种实现方法小结
2010/06/18 Javascript
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
js实现随机点名
2021/01/19 Javascript
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
详细探究Python中的字典容器
2015/04/14 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
python requests指定出口ip的例子
2019/07/25 Python
SmartBuyGlasses丹麦:网上购买名牌太阳镜、眼镜和隐形眼镜
2016/10/01 全球购物
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
Easy Spirit官网:美国休闲鞋履中的代表品牌
2019/04/12 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
联片教研活动总结
2014/07/01 职场文书
党支部三会一课计划
2014/09/24 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
2021/05/30 Javascript
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript