利用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编写屏幕截图程序方法
Feb 18 Python
python采集百度百科的方法
Jun 05 Python
分析并输出Python代码依赖的库的实现代码
Aug 09 Python
Python只用40行代码编写的计算器实例
May 10 Python
python中装饰器级连的使用方法示例
Sep 29 Python
python Matplotlib画图之调整字体大小的示例
Nov 20 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
Python Django基础二之URL路由系统
Jul 18 Python
Django项目基础配置和基本使用过程解析
Nov 25 Python
pytorch 彩色图像转灰度图像实例
Jan 13 Python
在Python中用GDAL实现矢量对栅格的切割实例
Mar 11 Python
python​格式化字符串
Apr 20 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多个文件上传到服务器实例
2014/10/29 PHP
php中call_user_func函数使用注意事项
2014/11/21 PHP
CI框架中$this-&gt;load-&gt;library()用法分析
2016/05/18 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
2016/12/10 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
JavaScript 不只是脚本
2007/05/30 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
Python循环语句中else的用法总结
2016/09/11 Python
matplotlib中legend位置调整解析
2017/12/19 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
python__name__原理及用法详解
2019/11/02 Python
python中列表的含义及用法
2020/05/26 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
python里glob模块知识点总结
2021/01/05 Python
巴西网上药房:onofre
2016/11/21 全球购物
个性化皮包、小袋、生活配件:Mon Purse
2019/03/26 全球购物
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
教师新年寄语
2014/04/03 职场文书
村抢险救灾方案
2014/05/09 职场文书
大学生党性分析材料
2014/12/19 职场文书
mysql函数之截取字符串的实现
2022/08/14 MySQL