利用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 命令行也可以自动补全
Nov 30 Python
Python实现过滤单个Android程序日志脚本分享
Jan 16 Python
用Python实现一个简单的能够上传下载的HTTP服务器
May 05 Python
python中快速进行多个字符替换的方法小结
Dec 15 Python
python下10个简单实例代码
Nov 15 Python
Python学习笔记之函数的定义和作用域实例详解
Aug 13 Python
python 爬取学信网登录页面的例子
Aug 13 Python
python FTP批量下载/删除/上传实例
Dec 22 Python
TensorFlow tf.nn.max_pool实现池化操作方式
Jan 04 Python
基于Python词云分析政府工作报告关键词
Jun 02 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
python代码中怎么换行
Jun 17 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
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
php中smarty变量修饰用法实例分析
2015/06/11 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
Vue底层实现原理总结
2018/02/17 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
python冒泡排序简单实现方法
2015/07/09 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
使用requests库制作Python爬虫
2018/03/25 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
Python使用Tkinter实现滚动抽奖器效果
2020/01/06 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
CSS3之边框多颜色Border-color属性使用示例
2013/10/11 HTML / CSS
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
职高毕业生自我鉴定
2013/10/21 职场文书
经理秘书岗位职责
2013/11/14 职场文书
经贸日语专业个人求职信
2013/12/13 职场文书
新法人代表任命书
2014/06/06 职场文书
自主招生专家推荐信
2015/03/26 职场文书
校园新闻稿范文
2015/07/18 职场文书
我的生日感言
2015/08/03 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
springboot读取resources下文件的方式详解
2022/06/21 Java/Android