利用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 获取 Linux 系统信息的代码
Jul 13 Python
python实现进程间通信简单实例
Jul 23 Python
python使用socket连接远程服务器的方法
Apr 29 Python
Python的Django中将文件上传至七牛云存储的代码分享
Jun 03 Python
Windows下安装python2和python3多版本教程
Mar 30 Python
Python3 jupyter notebook 服务器搭建过程
Nov 30 Python
对django xadmin自定义菜单的实例详解
Jan 03 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
Jun 14 Python
Python用Try语句捕获异常的实例方法
Jun 26 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
Apr 27 Python
python spilt()分隔字符串的实现示例
May 21 Python
一篇文章弄懂Python关键字、标识符和变量
Jul 15 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 一个页面执行时间类代码
2010/03/05 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
PHP中cookie知识点学习
2018/05/06 PHP
作为PHP程序员你要知道的另外一种日志
2018/07/30 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
JavaScript 题型问答有答案参考
2010/02/17 Javascript
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
2014/06/30 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
Python3直接爬取图片URL并保存示例
2019/12/18 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
安装不同版本的tensorflow与models方法实现
2021/02/20 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
什么是GWT的Entry Point
2013/08/16 面试题
简历中的自我评价范文
2014/02/05 职场文书
文明社区申报材料
2014/08/21 职场文书
大学生见习报告范文
2014/11/03 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
党小组意见范文
2015/06/08 职场文书
美容院员工规章制度
2015/08/05 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL