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