一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 利用python對mysql表做全局模糊搜索并分頁實例

利用python對mysql表做全局模糊搜索并分頁實例

2020-07-13 00:43Monster_ixx Python

這篇文章主要介紹了利用python對mysql表做全局模糊搜索并分頁實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在寫django項目的時候,有的數據沒有使用模型管理(數據表是動態添加的),所以要直接使用mysql。前端請求數據的時候可能會指定這幾個參數:要請求的頁號,頁大小,以及檢索條件。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
"""
    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:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@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:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!--列表分頁器-->
 <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表做全局模糊搜索并分頁實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/Monster_ixx/article/details/105056756

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美成黑人性猛交xxoo | 男同桌扒开女同桌胸罩喝奶 | 草莓在线 | 日本色午夜 | 性俄罗斯xxxxxhd | 九九大香尹人视频免费 | 国产精品自产拍在线观看2019 | 国产色图片| 韩国三级视频网站 | 精品一区二区三区波多野结衣 | 超碰av| 亚洲日韩精品欧美一区二区 | 掀开奶罩边躁狠狠躁软学生 | 欧乱色国产精品兔费视频 | 香蕉久久久久 | 国产亚洲视频网站 | 国产日韩视频一区 | 美女和男人差差 | 国产精品自在线 | 513热点网 | 久久久高清国产999尤物 | 天天综合色天天综合色sb | 色偷偷亚洲综合网亚洲 | 精品国产麻豆免费人成网站 | 国产午夜精品福利 | 饭冈加奈子黑人解禁在线播放 | jj视频免费 | 亚洲六月丁香六月婷婷蜜芽 | 午夜欧美精品 | 久久精品一区 | 91天堂国产在线 在线播放 | 久久精品视在线观看2 | 欧美摸胸 | 我年轻漂亮的继坶2中字在线播放 | 国产精品久久久免费视频 | 日本高清色视影www日本 | 91久久色| 日韩高清在线观看 | 91素人约啪 | 国产精品嫩草影院一二三区入口 | 天天色视频 |