一、准备工作
要进行数据分页显示,需要先连接数据库,并查询出所有相关的数据。这里我们使用 Python 提供的 MySQLdb 库来连接和查询 MySQL 数据库。在开始之前,需要确保以下事项:
- 安装好 Python 的 MySQLdb 库。
- 已经安装好 MySQL 数据库,并且知道数据库的相关信息,如主机名、用户名和密码等。
- 已经创建了相关的数据库和数据表,并且插入了一些测试数据。 这里是连接数据库的代码:
import MySQLdb
conn = MySQLdb.connect(host='localhost', user='root', passwd='password', db='test', charset='utf8')
cursor = conn.cursor()
其中,host 代表主机名,user 代表用户名,passwd 代表密码,db 代表数据库名,charset 代表编码方式。 下面是查询所有数据的代码:
sql = 'select * from student'
cursor.execute(sql)
results = cursor.fetchall()
其中,'select * from student' 是要执行的 SQL 语句,cursor.execute(sql) 会执行该语句并返回结果,fetchall() 会将所有数据都取出来。
二、分页显示数据
在查询出了所有数据之后,就可以进行分页处理了。下面是一个用 Python 处理分页的例子:
page = 1 # 当前页码
pagesize = 10 # 每页显示数量
start_index = (page - 1) * pagesize # 起始索引
end_index = start_index + pagesize # 结束索引
paged_results = results[start_index:end_index]
其中,page 表示当前页码,pagesize 表示每页显示数量,start_index 是起始索引,end_index 是结束索引,paged_results 是分页后的结果。
三、将分页结果展示到 HTML 页面中
将分页结果展示到 HTML 页面中,需要使用 Python 提供的 web 框架如 Flask 来实现。下面是一个用 Flask 展示分页数据的例子:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def index():
page = int(request.args.get('page', 1))
pagesize = 10
start_index = (page - 1) * pagesize
end_index = start_index + pagesize
sql = "select * from student"
cursor.execute(sql)
results = cursor.fetchall()
paged_results = results[start_index:end_index]
return render_template('index.html', results=paged_results, page=page)
if __name__ == '__main__':
app.run(debug=True)
在这个例子中,我们使用 Flask 框架来实现,用 request.args.get('page', 1)
获取 GET 请求中的页码参数,然后进行分页结果的查询和处理,最后使用 render_template()
函数将分页结果展示到 HTML 页面中。
四、HTML 页面展示分页结果
最后,我们需要在 HTML 页面中展示分页结果。可以使用 Bootstrap 等框架来实现分页样式的展示。下面是一个展示分页数据的 HTML 页面:
<!DOCTYPE html>
<html>
<head>
<title>分页显示数据</title>
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
{% for result in results %}
<tr>
<td>{{ result[0] }}</td>
<td>{{ result[1] }}</td>
<td>{{ result[2] }}</td>
<td>{{ result[3] }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="text-center">
<nav aria-label="Page navigation">
<ul class="pagination">
<li {% if page == 1 %}class="disabled"{% endif %}>
<a href="/?page={{ page - 1 }}" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
{% for i in range(1, 11) %}
{% set current_page = page - 5 + i %}
{% if current_page > 0 and current_page <= 20 %}
<li {% if page == current_page %}class="active"{% endif %}>
<a href="/?page={{ current_page }}">{{ current_page }}</a>
</li>
{% endif %}
{% endfor %}
<li {% if page == 20 %}class="disabled"{% endif %}>
<a href="/?page={{ page + 1 }}" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</body>
</html>