利用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脚本生成Android SALT扰码的方法
Sep 18 Python
python实现多线程采集的2个代码例子
Jul 07 Python
Python中XlsxWriter模块简介与用法分析
Apr 24 Python
python递归函数绘制分形树的方法
Jun 22 Python
使用python对文件中的单词进行提取的方法示例
Dec 21 Python
python+selenium 定位到元素,无法点击的解决方法
Jan 30 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
Django中使用haystack+whoosh实现搜索功能
Oct 08 Python
使用NumPy读取MNIST数据的实现代码示例
Nov 20 Python
python双端队列原理、实现与使用方法分析
Nov 27 Python
Python图像处理二值化方法实例汇总
Jul 24 Python
Python实现自动装机功能案例分析
Oct 22 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
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
javascript 动态创建表格
2015/01/08 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
js编写贪吃蛇的小游戏
2020/08/24 Javascript
JSONP原理及简单实现
2016/06/08 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
微信小程序-详解数据缓存
2016/11/24 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
详解Python中的__new__()方法的使用
2015/04/09 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
Django REST framework视图的用法
2019/01/16 Python
python执行精确的小数计算方法
2019/01/21 Python
Python OS模块实例详解
2019/04/15 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
python pygame实现球球大作战
2019/11/25 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
2020/05/26 Python
升旗仪式演讲稿
2014/05/08 职场文书
装饰工程师岗位职责
2014/06/08 职场文书
党校党性分析材料
2014/12/19 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
护士旷工检讨书
2015/08/15 职场文书
golang中的空slice案例
2021/04/27 Golang