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.pswp.cn/diannao/36381.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36381.shtml
英文地址,請注明出處:http://en.pswp.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…