针对“利用python对mysql表做全局模糊搜索并分页实例”,我分为以下几个步骤进行讲解:
- 连接mysql数据库
可以使用Python的第三方库pymysql
来连接mysql数据库。首先需要安装该库,可以使用以下命令进行安装:
pip install pymysql
连接mysql数据库的代码如下:
import pymysql
# 连接数据库
db = pymysql.connect(host="localhost", user="username", password="password", database="db_name", charset="utf8mb4")
# 创建游标对象
cursor = db.cursor()
这里需要替换数据库的具体信息,包括主机名、用户名、密码、数据库名。
- 数据表的全局模糊搜索
可以使用LIKE
语句进行全局模糊搜索。例如,我们搜索某个表中name
列中包含“test”的所有记录,可以使用以下代码:
# 模糊搜索
keyword = "test"
sql = f"SELECT * FROM table_name WHERE name LIKE '%{keyword}%'"
cursor.execute(sql)
result = cursor.fetchall()
这里需要替换具体的表名和列名。
- 分页
分页可以使用LIMIT
语句进行实现。例如,我们将搜索结果分成每页10条记录,显示第2页的结果,可以使用以下代码:
# 分页
page_size = 10
page_num = 2
start = (page_num - 1) * page_size
sql = f"SELECT * FROM table_name WHERE name LIKE '%{keyword}%' LIMIT {start}, {page_size}"
cursor.execute(sql)
result = cursor.fetchall()
这里需要替换具体的表名和列名。
- 完整代码示例
import pymysql
# 连接数据库
db = pymysql.connect(host="localhost", user="username", password="password", database="db_name", charset="utf8mb4")
# 创建游标对象
cursor = db.cursor()
# 模糊搜索
keyword = "test"
sql = f"SELECT * FROM table_name WHERE name LIKE '%{keyword}%'"
# 分页
page_size = 10
page_num = 2
start = (page_num - 1) * page_size
sql += f" LIMIT {start}, {page_size}"
# 执行sql语句
cursor.execute(sql)
result = cursor.fetchall()
# 打印结果
for row in result:
print(row)
# 关闭游标
cursor.close()
# 关闭数据库连接
db.close()
- 示例说明
假设有以下数据表:
CREATE TABLE table_name (
id INT PRIMARY KEY NOT NULL,
name VARCHAR(255) NOT NULL
);
INSERT INTO table_name (id, name) VALUES (1, 'test1');
INSERT INTO table_name (id, name) VALUES (2, 'hello');
INSERT INTO table_name (id, name) VALUES (3, 'test2');
INSERT INTO table_name (id, name) VALUES (4, 'world');
INSERT INTO table_name (id, name) VALUES (5, 'test3');
如果我们搜索包含关键字“test”的记录,并显示第2页的结果,可以使用以下代码:
import pymysql
# 连接数据库
db = pymysql.connect(host="localhost", user="username", password="password", database="db_name", charset="utf8mb4")
# 创建游标对象
cursor = db.cursor()
# 模糊搜索
keyword = "test"
sql = f"SELECT * FROM table_name WHERE name LIKE '%{keyword}%'"
# 分页
page_size = 2
page_num = 2
start = (page_num - 1) * page_size
sql += f" LIMIT {start}, {page_size}"
# 执行sql语句
cursor.execute(sql)
result = cursor.fetchall()
# 打印结果
for row in result:
print(row)
# 关闭游标
cursor.close()
# 关闭数据库连接
db.close()
这里的搜索结果为:
(5, 'test3')
因为只有一条符合条件的记录,并且这条记录在第2页。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用python对mysql表做全局模糊搜索并分页实例 - Python技术站