高效連接MySQL數據庫的Python模塊——pymysql

MySQL是當前使用最為廣泛的開源關係型數據庫管理系統,而Python是一種非常流行的編程語言。因此,許多開發者需要使用Python連接MySQL數據庫進行數據處理、數據挖掘等操作。pymysql模塊是Python3.x版本提供的連接MySQL數據庫的模塊,它提供了簡單、高效、穩定的連接方式。

一、安裝pymysql模塊

在使用pymysql之前,需要先安裝它。使用pip命令可以方便地安裝pymysql:

pip install pymysql

安裝好之後就可以在Python中使用pymysql了。需要提醒的是,pymysql只支持Python3.x版本,不支持Python2.x版本。

二、創建數據庫連接

使用pymysql連接MySQL的第一步就是創建數據庫連接。需要提供MySQL的主機地址、端口號、用戶名、密碼等信息,代碼如下:

import pymysql

# 打開數據庫連接
db = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test', charset='utf8mb4')

# 關閉數據庫連接
db.close()

其中,host參數表示主機地址,port參數表示端口號,user參數表示用戶名,password參數表示密碼,db參數表示數據庫名稱,charset參數表示字符集。

三、執行SQL語句

連接上數據庫之後,就可以執行SQL語句進行數據操作了。pymysql提供了executemany()、execute()、select()等方法執行SQL語句。

四、executemany()方法

executemany()方法可以執行一次提交多個SQL語句,它接收兩個參數,第一個參數是SQL語句的模板,第二個參數是一個元組或者列表,包含了多個SQL語句的參數,代碼如下:

import pymysql

# 打開數據庫連接
db = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test', charset='utf8mb4')

# 使用 cursor() 方法創建一個游標對象 cursor
cursor = db.cursor()

# 定義要執行的 SQL 語句
sql = "INSERT INTO STUDENTS(name, age, gender) VALUES (%s, %s, %s)"

# 定義要插入的數據列表
data = [('tom', 20, 'male'), ('jerry', 18, 'female'), ('john', 22, 'male')]

try:
    # 執行 SQL 語句
    cursor.executemany(sql, data)

    # 提交到數據庫執行
    db.commit()
    
    print('數據插入成功')
except:
    # 如果發生錯誤則回滾
    db.rollback()
    
    print('數據插入失敗')

# 關閉游標和數據庫連接
cursor.close()
db.close()

在上面的代碼中,首先創建了一個包含三個元組的列表,每個元組表示一個學生的姓名、年齡、性別。然後,執行executemany()方法插入了三條學生記錄。如果執行成功,則輸出“數據插入成功”,否則輸出“數據插入失敗”,同時會回滾之前的操作,不對數據庫進行任何修改。

五、execute()方法

execute()方法用於執行單個SQL語句,它接收一個參數,即要執行的SQL語句。代碼如下:

import pymysql

# 打開數據庫連接
db = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test', charset='utf8mb4')

# 使用 cursor() 方法創建一個游標對象 cursor
cursor = db.cursor()

# 定義要執行的 SQL 語句
sql = "SELECT * FROM STUDENTS"

try:
    # 執行 SQL 語句
    cursor.execute(sql)

    # 獲取所有記錄列表
    results = cursor.fetchall()
    for row in results:
        print(row)
except:
    print('無法獲取數據')

# 關閉游標和數據庫連接
cursor.close()
db.close()

在上面的代碼中,首先通過execute()方法執行了一條查詢語句,然後使用fetchall()方法獲取所有記錄的結果集,並輸出每一條記錄的信息。

六、調用存儲過程

在MySQL中,存儲過程是一組預編譯的SQL語句,可以接收輸入參數並返回多個輸出參數。當需要在Python中調用MySQL中的存儲過程時,可以使用pymysql模塊提供的callproc()方法。代碼如下:

import pymysql

# 打開數據庫連接
db = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test', charset='utf8mb4')

# 使用 cursor() 方法創建一個游標對象 cursor
cursor = db.cursor()

# 調用存儲過程
sql = "CALL test_proc(%s, %s, @sum)"
data = (10, 20)
cursor.callproc(sql, data)

# 獲取輸出參數
cursor.execute("SELECT @sum")
result = cursor.fetchone()
print(result[0])

# 關閉游標和數據庫連接
cursor.close()
db.close()

在上面的代碼中,調用了一個名為test_proc的存儲過程,該存儲過程接受兩個輸入參數,分別是10和20。存儲過程中計算了兩個參數的和,並將結果存儲在變量@sum中。在調用完存儲過程後,執行了一條SELECT語句獲取@sum的值,並輸出了該值。

七、異常處理

在使用pymysql時,由於網絡問題、MySQL服務器問題等原因,可能會出現一些異常。因此,建議在代碼中加入異常處理機制,保證程序的健壯性。下面是一個簡單的異常處理示例:

import pymysql

try:
    # 打開數據庫連接
    db = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test', charset='utf8mb4')

    # 使用 cursor() 方法創建一個游標對象 cursor
    cursor = db.cursor()

    # 定義要執行的 SQL 語句
    sql = "SELECT * FROM STUDENTS"

    # 執行 SQL 語句
    cursor.execute(sql)

    # 獲取所有記錄列表
    results = cursor.fetchall()
    for row in results:
        print(row)

    # 關閉游標和數據庫連接
    cursor.close()
    db.close()
except Exception as e:
    print("發生異常:", e)

在上面的代碼中,使用try…except結構來捕捉異常。如果在try塊中執行出現異常,就會跳轉到except塊中執行相應的語句。

總結

pymysql是Python中連接MySQL數據庫的一個重要模塊,它提供了簡單、高效、穩定的連接方式。本文介紹了pymysql模塊的基本使用方法,包括安裝模塊、創建數據庫連接、執行SQL語句、調用存儲過程和異常處理等。在實際開發過程中,需要根據具體的需求進行使用。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/156872.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-18 01:58
下一篇 2024-11-18 01:58

相關推薦

  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • 光模塊異常,SFP未認證(entityphysicalindex=6743835)——解決方案和

    如果您遇到類似optical module exception, sfp is not certified. (entityphysicalindex=6743835)的問題,那麼…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • Python模塊下載與安裝指南

    如果想要擴展Python的功能,可以使用Python模塊來實現。但是,在使用之前,需要先下載並安裝對應的模塊。本文將從以下多個方面對Python模塊下載與安裝進行詳細的闡述,包括使…

    編程 2025-04-29
  • Python編程三劍客——模塊、包、庫

    本文主要介紹Python編程三劍客:模塊、包、庫的概念、特點、用法,以及在實際編程中的實際應用,旨在幫助讀者更好地理解和應用Python編程。 一、模塊 1、概念:Python模塊…

    編程 2025-04-29
  • 如何使用pip安裝模塊

    pip作為Python默認的包管理系統,是安裝和管理Python包的一種方式,它可以輕鬆快捷地安裝、卸載和管理Python的擴展庫、模塊等。下面從幾個方面詳細介紹pip的使用方法。…

    編程 2025-04-28
  • Python如何下載第三方模塊

    想要使Python更加強大且具備跨平台性,我們可以下載許多第三方模塊。下面將從幾個方面詳細介紹如何下載第三方模塊。 一、使用pip下載第三方模塊 pip是Python的軟件包管理器…

    編程 2025-04-28
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Python怎麼導入數據庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的數據庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28

發表回復

登錄後才能評論