利用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中线程问题的简单讲解
Apr 03 Python
Python简明入门教程
Aug 04 Python
Python 中的with关键字使用详解
Sep 11 Python
django 发送手机验证码的示例代码
Apr 25 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
Jul 18 Python
python得到windows自启动列表的方法
Oct 14 Python
python 实现分页显示从es中获取的数据方法
Dec 26 Python
Python对象与引用的介绍
Jan 24 Python
python保存字典和读取字典的实例代码
Jul 07 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
Python基于yaml文件配置logging日志过程解析
Jun 23 Python
深度学习详解之初试机器学习
Apr 14 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
第八节 访问方式 [8]
2006/10/09 PHP
PHP生成静态页面详解
2006/11/19 PHP
php 生成随机验证码图片代码
2010/02/08 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
php生成动态验证码gif图片
2015/10/19 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
Laravel下生成验证码的类
2017/11/15 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
Vue-cli项目获取本地json文件数据的实例
2018/03/07 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
python 生成不重复的随机数的代码
2011/05/15 Python
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
详解Django中Request对象的相关用法
2015/07/17 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
python实现定时发送qq消息
2019/01/18 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
python脚本和网页有何区别
2020/07/02 Python
python实现批处理文件
2020/07/28 Python
CSS3实现全景图特效示例代码
2018/03/26 HTML / CSS
使用Html5中的cavas画一面国旗
2019/09/25 HTML / CSS
恶意软件的定义
2014/11/12 面试题
介绍一下你对SOA的认识
2016/04/24 面试题
《桃花心木》教学反思
2014/02/17 职场文书
公司离职证明标准范本
2014/10/05 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
Go 中的空白标识符下划线
2022/03/25 Golang
2022年显卡天梯图(6月更新)
2022/06/17 数码科技