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

python,mysql · 浏览次数 : 0

小编点评

本文介绍了两种使用Python进行MySQL模糊查询的方法:使用pymysql库和使用mysql-connector-python库。这两种方法都可以实现模糊查询功能,但它们在使用和注意事项上有所不同。 **方法一:使用pymysql库** pymysql是一个流行的Python MySQL连接器,可以方便地进行数据库操作,包括模糊查询。以下是使用pymysql进行模糊查询的详细步骤: 1. **安装pymysql库** 通过pip安装pymysql库: ```bash pip install pymysql ``` 2. **编写Python代码进行模糊查询** 首先导入pymysql库,并配置数据库连接信息。然后编写SQL查询语句,使用LIKE进行模糊查询,并执行查询。最后处理查询结果。 ```python import pymysql # 数据库连接配置 config = { 'host': 'localhost', 'user': 'your_username', 'password': 'your_password', 'database': 'your_database', 'charset': 'utf8mb4', 'cursorclass': pymysql.cursors.DictCursor } # 连接数据库 connection = pymysql.connect(**config) try: with connection.cursor() as cursor: # 编写SQL查询语句,使用LIKE进行模糊查询 # 假设我们有一个名为"articles"的表,其中有一个"content"字段,我们想要查询包含"Python"关键字的文章 sql = "SELECT * FROM articles WHERE content LIKE %s" # LIKE查询中,%是通配符,代表任意数量的字符(包括零个字符) # 我们需要为%s提供一个包含%的字符串来构建LIKE查询 search_term = '%Python%' cursor.execute(sql, (search_term,)) # 获取所有查询结果 results = cursor.fetchall() # 处理查询结果 for row in results: # row是一个字典,其中包含了查询结果的每一列及其对应的值 print(f"ID: {row['id']}, Title: {row['title']}, Content: {row['content'][:50]}...") finally: # 关闭数据库连接 connection.close() ``` **方法二:使用mysql-connector-python库** mysql-connector-python是MySQL官方提供的Python连接器,它提供了更高级的功能和更好的性能。以下是使用mysql-connector-python进行模糊查询的示例代码: 1. **安装mysql-connector-python库** 通过pip安装mysql-connector-python: ```bash pip install mysql-connector-python ``` 2. **编写Python代码进行模糊查询** 首先导入mysql.connector库,并配置数据库连接信息。然后使用字典游标执行SQL查询语句,使用LIKE进行模糊查询,并处理查询结果。 ```python import mysql.connector # 数据库连接配置 config = { 'host': 'localhost', 'user': 'your_username', 'password': 'your_password', 'database': 'your_database' } # 连接数据库 cnx = mysql.connector.connect(**config) try: cursor = cnx.cursor(dictionary=True) # 编写SQL查询语句,使用LIKE进行模糊查询 # 假设我们有一个名为"articles"的表,其中有一个"content"字段,我们想要查询包含"Python"关键字的文章 query = "SELECT * FROM articles WHERE content LIKE %s" search_term = '%Python%' cursor.execute(query, (search_term,)) # 获取所有查询结果 results = cursor.fetchall() # 处理查询结果 for row in results: # row是一个字典,其中包含了查询结果的每一列及其对应的值 print(f"ID: {row['id']}, Title: {row['title']}, Content: {row['content'][:50]}...") finally: # 关闭游标和连接 if cursor: cursor.close() if cnx.is_connected(): cnx.close() ``` **注意事项** 1. 在使用pymysql和mysql-connector-python时,都需要将数据库用户名、密码和数据库名替换为实际值。 2. 在执行查询时,需要注意SQL注入的风险,并使用参数化查询来防止SQL注入攻击。 3. 在处理完数据库操作后,应确保关闭数据库连接以释放资源。

正文

1.方法一:使用pymysql库的方法

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

1.1 安装pymysql库

首先,确保我们已经安装了pymysql库。如果没有,可以通过pip来安装:

bash复制代码

pip install pymysql

1.2 编写Python代码进行模糊查询

import pymysql  
  
# 数据库连接配置  
config = {  
    'host': 'localhost',  
    'user': 'your_username',  
    'password': 'your_password',  
    'database': 'your_database',  
    'charset': 'utf8mb4',  
    'cursorclass': pymysql.cursors.DictCursor  
}  
  
# 连接数据库  
connection = pymysql.connect(**config)  
  
try:  
    with connection.cursor() as cursor:  
        # 编写SQL查询语句,使用LIKE进行模糊查询  
        # 假设我们有一个名为"articles"的表,其中有一个"content"字段,我们想要查询包含"Python"关键字的文章  
        sql = "SELECT * FROM articles WHERE content LIKE %s"  
        # LIKE查询中,%是通配符,代表任意数量的字符(包括零个字符)  
        # 我们需要为%s提供一个包含%的字符串来构建LIKE查询  
        search_term = '%Python%'  
        cursor.execute(sql, (search_term,))  
  
        # 获取所有查询结果  
        results = cursor.fetchall()  
  
        # 处理查询结果  
        for row in results:  
            # row是一个字典,其中包含了查询结果的每一列及其对应的值  
            print(f"ID: {row['id']}, Title: {row['title']}, Content: {row['content'][:50]}...")  # 只打印内容的前50个字符作为示例  
  
finally:  
    # 关闭数据库连接  
    connection.close()

1.3 注意事项

(1)请将your_usernameyour_passwordyour_database替换为我们的MySQL数据库的实际用户名、密码和数据库名。

(2)在上面的示例中,我们使用了%作为通配符来构建LIKE查询。%Python%将匹配任何包含"Python"的字符串,不论其前后是否有其他字符。如果我们只想匹配以"Python"开头的字符串,可以使用Python%;只想匹配以"Python"结尾的字符串,可以使用%Python

(3)在执行查询时,我们使用了一个元组(search_term,)来传递参数给cursor.execute()方法。注意这个元组只有一个元素,但也需要逗号来标识它是一个元组,而不是一个括号内的普通表达式。

(4)fetchall()方法用于获取查询结果的所有行。如果我们只需要获取部分结果,可以使用fetchone()fetchmany(size)方法。

(5)在处理完数据库操作后,确保关闭数据库连接以释放资源。在这个示例中,我们使用了一个try...finally块来确保即使在发生异常时也能关闭连接。

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

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

2.1 安装mysql-connector-python库

如果还没有安装mysql-connector-python,可以通过pip来安装:

bash复制代码

pip install mysql-connector-python

2.2 编写Python代码进行模糊查询

import mysql.connector  
  
# 数据库连接配置  
config = {  
    'host': 'localhost',  
    'user': 'your_username',  
    'password': 'your_password',  
    'database': 'your_database'  
}  
  
# 连接数据库  
cnx = mysql.connector.connect(**config)  
  
try:  
    cursor = cnx.cursor(dictionary=True)  # 使用字典游标以便获取结果作为字典  
  
    # 编写SQL查询语句,使用LIKE进行模糊查询  
    # 假设我们有一个名为"articles"的表,其中有一个"content"字段,我们想要查询包含"Python"关键字的文章  
    query = ("SELECT * FROM articles WHERE content LIKE %s")  
    search_term = '%Python%'  # LIKE查询中,%是通配符  
  
    # 注意:mysql-connector-python中的参数化查询需要确保%是查询字符串的一部分  
    # 因此我们直接构造完整的LIKE表达式字符串  
    cursor.execute(query, (search_term,))  
  
    # 获取所有查询结果  
    results = cursor.fetchall()  
  
    # 处理查询结果  
    for row in results:  
        print(f"ID: {row['id']}, Title: {row['title']}, Content: {row['content'][:50]}...")  # 只打印内容的前50个字符作为示例  
  
finally:  
    # 关闭游标和连接  
    if cursor:  
        cursor.close()  
    if cnx.is_connected():  
        cnx.close()

2.3 注意事项

(1)同样需要将your_usernameyour_passwordyour_database替换为我们的MySQL数据库的实际用户名、密码和数据库名。

(2)在mysql.connector.connect()中,我们没有直接指定字符集和游标类型,因为mysql-connector-python的默认配置通常已经足够好。但是,如果需要,我们可以添加这些配置选项。

(3)使用cursor.close()cnx.close()来确保游标和连接都被正确关闭。

(4)mysql-connector-python也支持使用上下文管理器(即with语句)来自动管理游标和连接的关闭,但这需要创建一个新的游标类或使用特定的上下文管理器。在上面的示例中,我们手动关闭了它们以展示基本的资源管理。

(5)在处理数据库查询时,务必注意SQL注入的风险。通过使用参数化查询(如上例所示),我们可以确保用户输入被正确地转义,从而防止SQL注入攻击。

与Python中使用MySQL模糊查询的方法相似的内容:

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

本文详细介绍了Python中使用MySQL模糊查询的两种方法,一种是使用pymysql库的方法,另外一种是使用mysql-connector-python库的方法。

1.数据库的连接、创建会话与模型

SQLAlchemy 是一个强大的 Python 库,它让你可以用一种面向对象的方式来操作数据库(ORM 技术)。 在学习 SQLAlchemy 的过程中,需要一些基础知识的沉淀:Python基础、Python面向对象、MySQL数据库的诸多知识点…… 在此之前,你可能需要了解传统执行SQL语句和使

使用 Helm 管理应用的一些 Tips

背景 Helm 是一个 Kubernetes 的包管理工具,有点类似于 Mac 上的 brew,Python 中的 PIP;可以很方便的帮我们直接在 kubernetes 中安装某个应用。 比如我们可以直接使用以下命令方便的在 k8s 集群安装和卸载 MySQL: helm install my-s

[转贴]Python 中 -m 的典型用法、原理解析与发展演变

在命令行中使用 Python 时,它可以接收大约 20 个选项(option),语法格式如下: python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args] 1 本文想要聊聊比较特殊的“-m”选项:关于它

Python并行运算——threading库详解(持续更新)

0. 写在前面:进程和线程 博文参考: Python的并行(持续更新)_python 并行-CSDN博客 《Python并行编程 中文版》 一些相关概念请见上一篇博文。 1. 在Python中使用线程 1.1 多线程简介 线程是独立的处理流程,可以和系统的其他线程并行或并发地执行。 多线程可以共享数

Python正则表达式完全指南

**本篇文章将深入探讨python的一项强大工具:正则表达式。正则表达式是一个强大的文本处理工具,可以用来匹配,搜索,替换和解析文本。我们将逐步展示如何在Python中使用正则表达式,包括其基本语法,常见用法和一些高级技巧。而在最后的“one more thing”部分,我们将探索一个不为人知但又非

《探索Python Requests中的代理应用与实践》

本文详细介绍了如何在Python的requests库中使用高匿代理和隧道代理,以及如何部署一个简易的代理IP池来提高爬虫的稳定性和匿名性。同时,文章还深入探讨了野生代理的来源及其潜在的安全风险和使用限制。这篇文章适合希望进一步了解代理技术及其在网络爬虫开发中应用的读者。

(数据科学学习手札161)高性能数据分析利器DuckDB在Python中的使用

本文完整代码及附件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,就在几天前,经过六年多的持续开发迭代,著名的开源高性能分析型数据库DuckDB发布了其1.0.0正式版本。 DuckDB具有

利用FastAPI和OpenAI-Whisper打造高效的语音转录服务

最近好久没有写博客了,浅浅记录下如何将OpenAI-Whisper做成Web服务吧 介绍 在这篇指导性博客中,我们将探讨如何在Python中结合使用FastAPI和OpenAI-Whisper。OpenAI-Whisper是一个前沿的语音识别模型,而FastAPI是一个高性能的现代Web框架,专

在 Excel 中使用 Python 自动填充公式

安转Python包的国内镜像源 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple 阿里云 https://mirrors.aliyun.com/pypi/simple/ 豆瓣 https://pypi.douban.com/simple/ 百度云 https