利用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从sqlite读取并显示数据的方法
May 08 Python
基于Django模板中的数字自增(详解)
Sep 05 Python
用python制作游戏外挂
Jan 04 Python
python读取文件名称生成list的方法
Apr 27 Python
Django配置celery(非djcelery)执行异步任务和定时任务
Jul 16 Python
Pycharm+Scrapy安装并且初始化项目的方法
Jan 15 Python
详解python多线程之间的同步(一)
Apr 03 Python
Python any()函数的使用方法
Oct 28 Python
Django ValuesQuerySet转json方式
Mar 16 Python
Pandas实现一列数据分隔为两列
May 18 Python
关于Python错误重试方法总结
Jan 03 Python
python scipy 稀疏矩阵的使用说明
May 26 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中取得image按钮传递的name值
2006/10/09 PHP
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
2014/06/30 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
2014/02/23 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
Python下Fabric的简单部署方法
2015/07/14 Python
在Python的Django框架中创建和使用模版
2015/07/15 Python
详解Python中的Descriptor描述符类
2016/06/14 Python
Python常用算法学习基础教程
2017/04/13 Python
基于Python对数据shape的常见操作详解
2018/12/25 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
Python如何用filter函数筛选数据
2020/03/05 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
吃透移动端 1px的具体用法
2019/12/16 HTML / CSS
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
为您的家、后院、车库等在线购物:Spreetail
2019/06/17 全球购物
如何提高SQL Server的安全性
2016/07/25 面试题
可口可乐广告词
2014/03/20 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP
警用民用对讲机找不同
2022/02/18 无线电