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模糊查询的方法的更多相关文章

  1. Navicat的使用与python中使用MySQL的基本方法

    Navicat的使用与python中使用MySQL的基本方法 Navicat的下载及安装 下载地址 http://www.navicat.com.cn/download/navicat-premium ...

  2. SQL中对日期进行模糊查询的方法

    在我们通过SQL语句对数据库中的数据进行查询时,难免会遇到针对datetime的查询,但是因为一般情况下,输入的时间条件为年月日,所以,这种情况下,我们就要进行一下模糊查询,首先,摒弃一种投机取巧的方 ...

  3. python进阶09 MySQL高级查询

    python进阶09 MySQL高级查询 一.筛选条件 # 比较运算符 # 等于:= 不等于:!= 或<> 大于:> 小于:< 大于等于>= 小于等于:<= #空: ...

  4. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

  5. MySQL模糊查询:LIKE模式和REGEXP模式

    MySQL模糊查询提供了两种模式:LIKE模式和REGEXP模式. LIKE模式 LIKE模式是使用的LIKE 或 NOT LIKE 比较运算符进行模糊查询. SELECT 字段 FROM 表 WHE ...

  6. mysql模糊查询like/REGEXP

    原文:mysql模糊查询like/REGEXP 增删改查是mysql最基本的功能,而其中查是最频繁的操作,模糊查找是查询中非常常见的操作,于是模糊查找成了必修课. like模式 like意思是长得像, ...

  7. mysql模糊查询 like/REGEXP

    原文:mysql模糊查询like/REGEXP 增删改查是mysql最基本的功能,而其中查是最频繁的操作,模糊查找是查询中非常常见的操作,于是模糊查找成了必修课. like模式 like意思是长得像, ...

  8. Python中使用Mysql(安装篇)

    准备工作 import MySQLdb Linux系统自带了Python,但并不是都有这个包,至少我每次拿到一台全新的服务器时候,都发现没有装这个包. 这个东西的下载地址是 http://source ...

  9. (转)Python中操作mysql的pymysql模块详解

    原文:https://www.cnblogs.com/wt11/p/6141225.html https://shockerli.net/post/python3-pymysql/----Python ...

  10. python中执行shell的两种方法总结

    这篇文章主要介绍了python中执行shell的两种方法,有两种方法可以在Python中执行SHELL程序,方法一是使用Python的commands包,方法二则是使用subprocess包,这两个包 ...

随机推荐

  1. 全网最详细SpringCloud-高级篇

    SpringCloud-高级篇 高级篇包含微服务保护(流量控制,系统保护,熔断降级,服务授权).分布式事务.多级缓存.Redis集群.可靠消息服务 学习安排 技术分类 1.微服务保护 ①初识Senti ...

  2. VGA显示文字

    VGA显示文字 VGA字符显示的原理 把要显示的字符转换成字符点阵,然后编码存储,着色的部分为1,其它为0.然后在VGA上输出显示. 字符点阵生成软件: https://www.zhetao.com/ ...

  3. RustDesk 自建服务器部署和使用教程

    RustDesk 是一个强大的开源远程桌面软件,是中国开发者的作品,它使用 Rust 编程语言构建,提供安全.高效.跨平台的远程访问体验.可以说是目前全球最火的开源远程桌面软件了,GitHub 星星数 ...

  4. C 编程异常 — double free or corruption (fasttop)

    问题:运行代码的时候程序崩溃. *** Error in `./parsing': double free or corruption (fasttop): 0x00000000023d2350 ** ...

  5. 基于webapi的websocket聊天室(番外一)

    上一篇我已经实现了聊天室,并且在协议中实现了4种类型的消息传输.其实还可以添加video,audio,live等等类型. 不过假如把目前的协议看作RCP1.0版的话,这个版本就只支持有限的4种消息.精 ...

  6. 14个Flink SQL性能优化实践分享

    本文分享自华为云社区<Flink SQL性能优化实践> ,作者:超梦. 在大数据处理领域,Apache Flink以其流处理和批处理一体化的能力,成为许多企业的首选.然而,随着数据量的增长 ...

  7. lsjORM ----让开发变得更加快捷(一)

    描述: 1.lsjORM底层采用的是开源petapocoORM框架,你可以任意的拓展它 2.自动生成DAL Model BLL等文件,让习惯三层开发的你更加顺手 3.节省编写sql的时间,让开发更快捷 ...

  8. 使用tc命令模拟linux网络延迟环境

    tc(Traffic Control)是 Linux 中用于流量控制和网络模拟的强大工具.你可以使用它来模拟网络延迟.带宽限制.数据包丢失等. 以下是一个使用 tc 模拟网络延迟的基本步骤: 1.查看 ...

  9. 【题解】A566.三点共线

    题目大意,给定在平面直角坐标系中的多个点,判断有多少个三元组 \((A, B, C)\) 满足共线性质. 题目链接:A566.三点共线. 大题思路就是暴力所有的三元组,判断三个元素的斜率是否相同即可. ...

  10. 【C#】 封装的异步HttpRequest

      private async void btn_userLogin_Click(object sender, EventArgs e)        {            UInfo = new ...