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

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注入攻击。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/36381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MSA 助力实验室测量更稳定、更准确

在汽车制造、石油化工、电子制造等行业,产品的质量和性能需要通过准确的测量来保证。但是由于测量设备的误差、操作人员的主观影响以及环境条件的干扰等因素会导致测量系统出现各种问题,且这些问题会导致测量结果不准确,从而影响产品质量。 随着工业信息化的迅速发展, 各行业对…

松下的台灯值得入手吗?书客、飞利浦热门品牌横评分享!

自从儿子步入小学,他埋首于书桌前的时光愈发冗长,很欣慰他能够认真专心学习,却也隐隐担忧他的视力健康。在了解视力健康中发现长时间在过暗或过亮的光线环境下学习,会导致瞳孔频繁地收缩与扩张,极易引发视觉疲劳。更令…

Python 基础:用 json 模块存储和读取数据

目录 一、用 json 存储数据二、用 json 读取数据 遇到看不明白的地方,欢迎在评论中留言呐,一起讨论,一起进步! 本文参考:《Python编程:从入门到实践(第2版)》 用户关闭程序时&#…

HTML5 WebSocket:实时通信的新篇章

随着互联网技术的飞速发展,实时交互成为现代Web应用不可或缺的一部分。在这一背景下,HTML5引入了WebSocket协议,彻底改变了传统的客户端与服务器之间的通信方式,为开发者提供了一种高效、全双工、低延迟的数据传输通道。本文将深入…

构建LangChain应用程序的示例代码:45、如何利用大型语言模型(LLMs)和 Python 库 SymPy 进行符号数学计算的教程

这个文件是一个关于如何使用大型语言模型和 Python 进行符号数学计算的示例。它主要展示了如何求解导数、积分、线性方程和微分方程。底层技术栈包括 SymPy,一个 Python 的符号数学库,以及 OpenAI 的 API,用于生成确定性的结果。 LLM 符号数…

无门槛代理SSL证书入门指南

随着网络安全问题日益凸显,SSL证书作为保障网络数据传输安全的重要手段,其市场需求也在持续增长。因此,成为SSL证书代理不仅具有巨大的商业价值,更是提升网络安全保障能力的关键步骤。本文将为您介绍如何快速无门槛代理SSL证书的方…

GMSB文章六:微生物SCFA关联分析

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2 介绍 微生物短链脂肪酸(SCFAs)是由肠道微生物发酵膳食纤维、抗性淀粉、低…

AI写作助力:如何用AI降重工具快速提升论文原创性?

高查重率是许多毕业生的困扰。通常,高查重率源于过度引用未经修改的参考资料和格式错误。传统的降重方法,如修改文本和增添原创内容,虽必要但耗时且成效不一。 鉴于此,应用AI工具进行AIGC降重成为了一个高效的解决方案。这些工具…

抖音集成:通过MessageBox引领数字化营销新潮流

抖音集成:通过MessageBox引领数字化营销新潮流 在数字化营销的大潮中,企业需要不断探索新的方式来优化其营销策略,以抓住更多的市场机会。抖音作为一款全球知名的短视频社交平台,凭借其庞大的用户群体和高度互动的特性&#xff0…

v1.0.4优雅草超级站长工具开发进度更新·增加vip兑换功能·增加每个页面批量查询和清空功能

https://doc.youyacao.com/9/2157 v1.0.4优雅草超级站长工具开发进度更新增加vip兑换功能增加每个页面批量查询和清空功能 演示地址-可测试 https://test2.youyacao.com 介绍 本产品是一款针对站长使用的工具,针对网站域名的多维信息查询工具,本产品…

OpenAI推迟ChatGPT高级语音模式发布!谷歌将推出明星网红AI聊天机器人|AI日报

文章推荐 时序预测双飞轮,全面超越Transformer,纯MLP模型实现性能效能齐飞 OpenAI将终止对我国提供API服务,国内大模型将迎来“六小强”格局!|AI日报 推迟ChatGPT高级语音模式发布!OpenAI将计划在秋季向…

elasticsearch重置密码

0 案例背景 Elasticsearch三台集群环境,对外端口为6200,忘记elasticsearch密码,进行重置操作 注:若无特殊说明,三台服务器均需进行处理操作 1 停止es /rpa/bin/elasticsearch.sh stop 检查状态 ps -ef|grep elast…

如何在Spring Boot应用中集成MongoDB数据库

如何在Spring Boot应用中集成MongoDB数据库 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在现代应用开发中,数据库是存储和管理数据的核心。Mon…

视频监控管理平台LntonCVS智能视频监控平台系统详细介绍

安防视频监控平台LntonCVS以其卓越的灵活性和便捷的部署特性在众多同类产品中脱颖而出。它不仅支持多种主流标准协议,如国标GB28181、RTSP/Onvif、RTMP等,还兼容了海康Ehome、海大宇等厂家的私有协议和SDK接入,为用户提供了更加丰富的选择。 …

Android 简单的so层逆向

前言 最近搞了一下安卓。简单学习记录一下。 目标程序: xiao shui mian 也就是某个参数的逆向 准备环境 安卓机scrcpyadbfrida解包软件(不列举了) 这种环境安装这里就不多说了。教程也很多。 参数逆向分析 先抓包看看参数 这里我使用…

【仿真建模-anylogic】ViewArea解析

Author:赵志乾 Date:2024-06-27 Declaration:All Right Reserved!!! 1. 应用场景 view area又叫视图区域,其作用是在presentation中标记一块区域,便于动画演示过程中快速切换可视区…

海豚调度调优 | 如何解决任务被禁用出现的Bug

💡 本系列文章是 DolphinScheduler 由浅入深的教程,涵盖搭建、二开迭代、核心原理解读、运维和管理等一系列内容。适用于想对 DolphinScheduler了解或想要加深理解的读者。 祝开卷有益。 本系列教程基于 DolphinScheduler 2.0.5 做的优化。&#xff…

PTA—C语言期末复习(选择题)

1. 按照标识符的要求,(A)不能组成标识符。 A.连接符 B.下划线 C.大小写字母 D.数字字符 在大多数编程语言中,标识符通常由字母(包括大写和小写)、数字和下划线组成,但不能以数字开头&#xff0c…

如何解决centos停止维护后更换Debian11平替?

再有9天时间centos7.x就将停止维护,最近很多人已经再更换系统了!有推荐alibabacloud,opencloud,debian,ubuntu,centos-stream,tencentos,anolis,rockey,almal,oracle,arch,Fedora,opensuse 很多人不知道选什么,这里就主要介绍一下 如果你是使用宝塔面板 并且想要无缝衔…

java 数据新增、更新、删除监听,并记录日志或其他业务

数据新增、更新、删除监听,并记录日志或其他业务 1.使用场景 日志记录、KPI考核(业务进行到某个阶段,对人员的考核)等等 实体监听器 实体增加注解 EntityListeners({KpiOrderCounter.class}) /*** 订单管理考核** author sul…