利用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二维码生成库qrcode安装和使用示例
Dec 16 Python
老生常谈Python序列化和反序列化
Jun 28 Python
matplotlib绘图实例演示标记路径
Jan 23 Python
python实现csv格式文件转为asc格式文件的方法
Mar 23 Python
python线程池threadpool使用篇
Apr 27 Python
numpy判断数值类型、过滤出数值型数据的方法
Jun 09 Python
Python全排列操作实例分析
Jul 24 Python
详解python分布式进程
Oct 08 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
Django RBAC权限管理设计过程详解
Aug 06 Python
python编写微信公众号首图思路详解
Dec 13 Python
python音频处理的示例详解
Dec 23 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 代码优化的42条建议 推荐
2009/09/25 PHP
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
一个简单的php加密解密函数(动态加密)
2013/06/19 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
JavaScript检查子字符串是否在字符串中的方法
2016/02/03 Javascript
js简单倒计时实现代码
2016/04/30 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
WEB开发之注册页面验证码倒计时代码的实现
2016/12/15 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
微信小程序自定义轮播图
2018/11/04 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
详解js根据百度地图提供经纬度计算两点距离
2019/05/13 Javascript
前端路由&amp;webpack基础配置详解
2019/06/10 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
Python读取配置文件(config.ini)以及写入配置文件
2020/04/08 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
英语翻译系毕业生求职信
2013/09/29 职场文书
应届生新闻编辑求职信
2013/11/19 职场文书
运动会口号16字
2014/06/07 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
Golang 结构体数据集合
2022/04/22 Golang
Python实现仓库管理系统
2022/05/30 Python