翼度科技»论坛 编程开发 python 查看内容

Python中使用MySQL模糊查询的详细方法

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
1.方法一:使用pymysql库的方法

当在Python中使用MySQL进行模糊查询时,我们通常会使用
  1. pymysql
复制代码
  1. mysql-connector-python
复制代码
这样的库来连接MySQL数据库并执行查询。以下是一个使用
  1. pymysql
复制代码
进行模糊查询的详细示例,包括安装库、连接数据库、执行查询以及处理结果。

1.1 安装pymysql库

首先,确保我们已经安装了
  1. pymysql
复制代码
库。如果没有,可以通过pip来安装:
  1. bash复制代码

  2. pip install pymysql
复制代码
1.2 编写Python代码进行模糊查询
  1. import pymysql  
  2.   
  3. # 数据库连接配置  
  4. config = {  
  5.     'host': 'localhost',  
  6.     'user': 'your_username',  
  7.     'password': 'your_password',  
  8.     'database': 'your_database',  
  9.     'charset': 'utf8mb4',  
  10.     'cursorclass': pymysql.cursors.DictCursor  
  11. }  
  12.   
  13. # 连接数据库  
  14. connection = pymysql.connect(**config)  
  15.   
  16. try:  
  17.     with connection.cursor() as cursor:  
  18.         # 编写SQL查询语句,使用LIKE进行模糊查询  
  19.         # 假设我们有一个名为"articles"的表,其中有一个"content"字段,我们想要查询包含"Python"关键字的文章  
  20.         sql = "SELECT * FROM articles WHERE content LIKE %s"  
  21.         # LIKE查询中,%是通配符,代表任意数量的字符(包括零个字符)  
  22.         # 我们需要为%s提供一个包含%的字符串来构建LIKE查询  
  23.         search_term = '%Python%'  
  24.         cursor.execute(sql, (search_term,))  
  25.   
  26.         # 获取所有查询结果  
  27.         results = cursor.fetchall()  
  28.   
  29.         # 处理查询结果  
  30.         for row in results:  
  31.             # row是一个字典,其中包含了查询结果的每一列及其对应的值  
  32.             print(f"ID: {row['id']}, Title: {row['title']}, Content: {row['content'][:50]}...")  # 只打印内容的前50个字符作为示例  
  33.   
  34. finally:  
  35.     # 关闭数据库连接  
  36.     connection.close()
复制代码
1.3 注意事项

(1)请将
  1. your_username
复制代码
  1. your_password
复制代码
  1. your_database
复制代码
替换为我们的MySQL数据库的实际用户名、密码和数据库名。
(2)在上面的示例中,我们使用了
  1. %
复制代码
作为通配符来构建LIKE查询。
  1. %Python%
复制代码
将匹配任何包含"ython"的字符串,不论其前后是否有其他字符。如果我们只想匹配以"ython"开头的字符串,可以使用
  1. Python%
复制代码
;只想匹配以"ython"结尾的字符串,可以使用
  1. %Python
复制代码

(3)在执行查询时,我们使用了一个元组
  1. (search_term,)
复制代码
来传递参数给
  1. cursor.execute()
复制代码
方法。注意这个元组只有一个元素,但也需要逗号来标识它是一个元组,而不是一个括号内的普通表达式。
(4)
  1. fetchall()
复制代码
方法用于获取查询结果的所有行。如果我们只需要获取部分结果,可以使用
  1. fetchone()
复制代码
  1. fetchmany(size)
复制代码
方法。
(5)在处理完数据库操作后,确保关闭数据库连接以释放资源。在这个示例中,我们使用了一个
  1. try...finally
复制代码
块来确保即使在发生异常时也能关闭连接。

2.方法二:使用mysql-connector-python库的方法

除了使用
  1. pymysql
复制代码
库进行MySQL的模糊查询之外,还可以使用
  1. mysql-connector-python
复制代码
库,这是MySQL官方提供的Python连接器。以下是使用
  1. mysql-connector-python
复制代码
进行模糊查询的示例代码:

2.1 安装mysql-connector-python库

如果还没有安装
  1. mysql-connector-python
复制代码
,可以通过pip来安装:
  1. bash复制代码

  2. pip install mysql-connector-python
复制代码
2.2 编写Python代码进行模糊查询
  1. import mysql.connector  
  2.   
  3. # 数据库连接配置  
  4. config = {  
  5.     'host': 'localhost',  
  6.     'user': 'your_username',  
  7.     'password': 'your_password',  
  8.     'database': 'your_database'  
  9. }  
  10.   
  11. # 连接数据库  
  12. cnx = mysql.connector.connect(**config)  
  13.   
  14. try:  
  15.     cursor = cnx.cursor(dictionary=True)  # 使用字典游标以便获取结果作为字典  
  16.   
  17.     # 编写SQL查询语句,使用LIKE进行模糊查询  
  18.     # 假设我们有一个名为"articles"的表,其中有一个"content"字段,我们想要查询包含"Python"关键字的文章  
  19.     query = ("SELECT * FROM articles WHERE content LIKE %s")  
  20.     search_term = '%Python%'  # LIKE查询中,%是通配符  
  21.   
  22.     # 注意:mysql-connector-python中的参数化查询需要确保%是查询字符串的一部分  
  23.     # 因此我们直接构造完整的LIKE表达式字符串  
  24.     cursor.execute(query, (search_term,))  
  25.   
  26.     # 获取所有查询结果  
  27.     results = cursor.fetchall()  
  28.   
  29.     # 处理查询结果  
  30.     for row in results:  
  31.         print(f"ID: {row['id']}, Title: {row['title']}, Content: {row['content'][:50]}...")  # 只打印内容的前50个字符作为示例  
  32.   
  33. finally:  
  34.     # 关闭游标和连接  
  35.     if cursor:  
  36.         cursor.close()  
  37.     if cnx.is_connected():  
  38.         cnx.close()
复制代码
2.3 注意事项

(1)同样需要将
  1. your_username
复制代码
  1. your_password
复制代码
  1. your_database
复制代码
替换为我们的MySQL数据库的实际用户名、密码和数据库名。
(2)在
  1. mysql.connector.connect()
复制代码
中,我们没有直接指定字符集和游标类型,因为
  1. mysql-connector-python
复制代码
的默认配置通常已经足够好。但是,如果需要,我们可以添加这些配置选项。
(3)使用
  1. cursor.close()
复制代码
  1. cnx.close()
复制代码
来确保游标和连接都被正确关闭。
(4)
  1. mysql-connector-python
复制代码
也支持使用上下文管理器(即
  1. with
复制代码
语句)来自动管理游标和连接的关闭,但这需要创建一个新的游标类或使用特定的上下文管理器。在上面的示例中,我们手动关闭了它们以展示基本的资源管理。
(5)在处理数据库查询时,务必注意SQL注入的风险。通过使用参数化查询(如上例所示),我们可以确保用户输入被正确地转义,从而防止SQL注入攻击。
到此这篇关于Python中使用MySQL模糊查询的方法的文章就介绍到这了,更多相关Python中使用MySQL模糊查询的方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/python/323409m6b.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具