<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 3532字,需瀏覽 8分鐘

           ·

          2024-06-30 22:11

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

          當(dāng)在Python中使用MySQL進(jìn)行模糊查詢時(shí),我們通常會使用pymysqlmysql-connector-python這樣的庫來連接MySQL數(shù)據(jù)庫并執(zhí)行查詢。以下是一個(gè)使用pymysql進(jìn)行模糊查詢的詳細(xì)示例,包括安裝庫、連接數(shù)據(jù)庫、執(zhí)行查詢以及處理結(jié)果。

          1.1 安裝pymysql庫

          首先,確保我們已經(jīng)安裝了pymysql庫。如果沒有,可以通過pip來安裝:

          bash復(fù)制代碼

          pip install pymysql

          1.2 編寫Python代碼進(jìn)行模糊查詢

          import pymysql  

          # 數(shù)據(jù)庫連接配置
          config = {
          'host': 'localhost',
          'user': 'your_username',
          'password': 'your_password',
          'database': 'your_database',
          'charset': 'utf8mb4',
          'cursorclass': pymysql.cursors.DictCursor
          }

          # 連接數(shù)據(jù)庫
          connection = pymysql.connect(**config)

          try:
          with connection.cursor() as cursor:
          # 編寫SQL查詢語句,使用LIKE進(jìn)行模糊查詢
          # 假設(shè)我們有一個(gè)名為"articles"的表,其中有一個(gè)"content"字段,我們想要查詢包含"Python"關(guān)鍵字的文章
          sql = "SELECT * FROM articles WHERE content LIKE %s"
          # LIKE查詢中,%是通配符,代表任意數(shù)量的字符(包括零個(gè)字符)
          # 我們需要為%s提供一個(gè)包含%的字符串來構(gòu)建LIKE查詢
          search_term = '%Python%'
          cursor.execute(sql, (search_term,))

          # 獲取所有查詢結(jié)果
          results = cursor.fetchall()

          # 處理查詢結(jié)果
          for row in results:
          # row是一個(gè)字典,其中包含了查詢結(jié)果的每一列及其對應(yīng)的值
          print(f"ID: {row['id']}, Title: {row['title']}, Content: {row['content'][:50]}...") # 只打印內(nèi)容的前50個(gè)字符作為示例

          finally:
          # 關(guān)閉數(shù)據(jù)庫連接
          connection.close()

          1.3 注意事項(xiàng)

          (1)請將your_usernameyour_passwordyour_database替換為我們的MySQL數(shù)據(jù)庫的實(shí)際用戶名、密碼和數(shù)據(jù)庫名。

          (2)在上面的示例中,我們使用了%作為通配符來構(gòu)建LIKE查詢。%Python%將匹配任何包含"Python"的字符串,不論其前后是否有其他字符。如果我們只想匹配以"Python"開頭的字符串,可以使用Python%;只想匹配以"Python"結(jié)尾的字符串,可以使用%Python

          (3)在執(zhí)行查詢時(shí),我們使用了一個(gè)元組(search_term,)來傳遞參數(shù)給cursor.execute()方法。注意這個(gè)元組只有一個(gè)元素,但也需要逗號來標(biāo)識它是一個(gè)元組,而不是一個(gè)括號內(nèi)的普通表達(dá)式。

          (4)fetchall()方法用于獲取查詢結(jié)果的所有行。如果我們只需要獲取部分結(jié)果,可以使用fetchone()fetchmany(size)方法。

          (5)在處理完數(shù)據(jù)庫操作后,確保關(guān)閉數(shù)據(jù)庫連接以釋放資源。在這個(gè)示例中,我們使用了一個(gè)try...finally塊來確保即使在發(fā)生異常時(shí)也能關(guān)閉連接。

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

          除了使用pymysql庫進(jìn)行MySQL的模糊查詢之外,還可以使用mysql-connector-python庫,這是MySQL官方提供的Python連接器。以下是使用mysql-connector-python進(jìn)行模糊查詢的示例代碼:

          2.1 安裝mysql-connector-python庫

          如果還沒有安裝mysql-connector-python,可以通過pip來安裝:

          bash復(fù)制代碼

          pip install mysql-connector-python

          2.2 編寫Python代碼進(jìn)行模糊查詢

          import mysql.connector  

          # 數(shù)據(jù)庫連接配置
          config = {
          'host': 'localhost',
          'user': 'your_username',
          'password': 'your_password',
          'database': 'your_database'
          }

          # 連接數(shù)據(jù)庫
          cnx = mysql.connector.connect(**config)

          try:
          cursor = cnx.cursor(dictionary=True) # 使用字典游標(biāo)以便獲取結(jié)果作為字典

          # 編寫SQL查詢語句,使用LIKE進(jìn)行模糊查詢
          # 假設(shè)我們有一個(gè)名為"articles"的表,其中有一個(gè)"content"字段,我們想要查詢包含"Python"關(guān)鍵字的文章
          query = ("SELECT * FROM articles WHERE content LIKE %s")
          search_term = '%Python%' # LIKE查詢中,%是通配符

          # 注意:mysql-connector-python中的參數(shù)化查詢需要確保%是查詢字符串的一部分
          # 因此我們直接構(gòu)造完整的LIKE表達(dá)式字符串
          cursor.execute(query, (search_term,))

          # 獲取所有查詢結(jié)果
          results = cursor.fetchall()

          # 處理查詢結(jié)果
          for row in results:
          print(f"ID: {row['id']}, Title: {row['title']}, Content: {row['content'][:50]}...") # 只打印內(nèi)容的前50個(gè)字符作為示例

          finally:
          # 關(guān)閉游標(biāo)和連接
          if cursor:
          cursor.close()
          if cnx.is_connected():
          cnx.close()

          2.3 注意事項(xiàng)

          (1)同樣需要將your_usernameyour_passwordyour_database替換為我們的MySQL數(shù)據(jù)庫的實(shí)際用戶名、密碼和數(shù)據(jù)庫名。

          (2)在mysql.connector.connect()中,我們沒有直接指定字符集和游標(biāo)類型,因?yàn)?code style="margin-right: 3px;margin-left: 3px;padding-right: 5px;padding-left: 5px;font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace, sans-serif;font-size: 12px;line-height: 1.8;display: inline-block;overflow-x: auto;vertical-align: middle;border-radius: 3px;background-color: rgb(251, 229, 225);color: rgb(192, 52, 29);border-width: initial !important;border-style: none !important;border-color: initial !important;">mysql-connector-python的默認(rèn)配置通常已經(jīng)足夠好。但是,如果需要,我們可以添加這些配置選項(xiàng)。

          (3)使用cursor.close()cnx.close()來確保游標(biāo)和連接都被正確關(guān)閉。

          (4)mysql-connector-python也支持使用上下文管理器(即with語句)來自動管理游標(biāo)和連接的關(guān)閉,但這需要?jiǎng)?chuàng)建一個(gè)新的游標(biāo)類或使用特定的上下文管理器。在上面的示例中,我們手動關(guān)閉了它們以展示基本的資源管理。

          (5)在處理數(shù)據(jù)庫查詢時(shí),務(wù)必注意SQL注入的風(fēng)險(xiǎn)。通過使用參數(shù)化查詢(如上例所示),我們可以確保用戶輸入被正確地轉(zhuǎn)義,從而防止SQL注入攻擊。

          鏈接:https://www.cnblogs.com/TS86/p/18271958

          (版權(quán)歸原作者所有,侵刪)


          瀏覽 78
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲高清无码免费视频 | 黄色一级片免费直播 | 大香蕉伊人7 | 东京热视频在线观看 | 日韩免费中文字幕A片 |