Python支持通過多種方式訪問MySQL數據庫。可能有些剛入門的朋友們對Python訪問MySQL數據庫還不是很熟悉,故計劃對Python訪問MySQL數據庫的這幾種方式分別作一介紹。
本文以windows平臺上開發為例進行講解,相關基本開發環境如下:
(1) Windows 7 (64位)
(2) MySQL 8.0.21
(3) Python 3.8.5
(4) mysqlclient 2.0.1
本次分享的內容目錄如下:
前言
1. MySQLdb 介紹
2. MySQLdb 安裝
3. MySQLdb 示例代碼
結束語
1. MySQLdb 簡介
MySQLdb曾經是一款流行的可以使Python連接到MySQL的驅動接口,它基于MySQL C API實現。通過MySQLdb驅動接口,Python程序就可以使用遵循Python數據庫API規范v2.0(PEP 249)的API來便捷地訪問MySQL數據庫了。

遺憾的是MySQLdb只支持Python 2.x,不支持Python 3.x,并且已經于2014年初停止更新維護了。不過慶幸的是mysqlclient撿起了接力棒,它派生于MySQLdb,修復了一些bug,支持Python 3.x,并保持持續更新維護,目前最新版本為2.0.1。

注:雖然mysqlclient項目的PyPI包名為mysqlclient,但在Python編程調用模塊時仍然使用import MySQLdb,而不是import mysqlclient。這么做的原可能是mysqlclient作者希望mysqlclient項目最終能重新合并回MySQLdb項目吧。
以下是新舊對比表:

# 2. MySQLdb 安裝
2.1 MySQL下載安裝

一、MySQL下載
可從MySQL官方下載網址上找到安裝包。

注:這里選擇64位Windows平臺對應的最新MySQL Community版本安裝文件:mysql-installer-community-8.0.21.0.msi。
二、MySQL安裝
執行mysql-installer-community-8.0.21.0.msi安裝文件,根據提示完成MySQL安裝。
三、MySQL賬戶權限設置

2.2 Python下載安裝

一、Python下載
可從Python官方下載網址上找到安裝包。

注:這里選擇64位Windows平臺對應的最新版本的Python安裝文件:python-3.8.5-amd64.exe。
二、Python安裝
執行python-3.8.5-amd64.exe安裝文件,根據提示完成Python安裝。
注:在Windows上安裝Python時,請務必在安裝過程中啟用【將python.exe添加到Path】 。
2.3 MySQLdb下載安裝

MySQLdb可以通過pip命令來完成下載安裝。(注:本文實際編程時涉及的MySQLdb均指mysqlclient)

注:在Windows上,mysqlclient的默認安裝位置為:{python安裝路徑}Libsite-packages。如本機Python安裝在C:DevelopPython目錄下,則mysqlclient安裝在C:DevelopPythonLibsite-packages目錄下。
可通過如下方式對安裝進行驗證:

3. MySQLdb 示例代碼
Python通過MySQLdb驅動接口訪問操作MySQL的一般流程為:(1) 建立連接;(2) 獲取游標;(3) 執行SQL;(4) 提交事務; (5) 釋放資源。
下面針對訪問MySQL數據庫常見的操作(如:連接數據庫、創建數據庫、刪除數據庫、創建數據表、刪除數據表、插入數據記錄、刪除數據記錄、修改數據記錄、查詢數據記錄等)分別給出一個較為完整的入門示例(含詳細代碼注釋)。
3.1 創建數據庫連接示例

說明:MySQLdb.connect()構造函數創建到MySQL服務器的連接并返回一個 MySQLConnection對象。
3.2 創建數據庫示例

幾個關鍵方法說明:
(1) cursor() 方法:獲得MySQL的操作游標,利用游標來執行SQL語句。
(2) execute() 方法:將字符串內容當做命令來執行,作用是動態創建和執行SQL語句。
(3) commit() 方法:真正將SQL語句提交到數據庫執行。對于數據的增刪改查操作,都需要調用該方法才能生效。
(4) rollback() 方法:如果執行失敗,調用該方法執行數據回滾,相當于什么都沒發生過。
3.3 刪除數據庫示例

3.4 創建數據表示例

3.5 刪除數據表示例

3.6 插入數據記錄示例

3.7 批量插入數據記錄示例

3.8 刪除數據記錄示例

3.9 修改數據記錄示例

3.10 查詢數據記錄示例

根據讀取數據的多少,應采用不同的方法:
(1) 如果讀取全部數據,使用fetchall() 方法。
(2) 如果讀取多條數據,使用fetchmany(n) 方法。
(3) 如果讀取一條數據,使用fetchone()方法。
結束語
通過上面的介紹,相信感興趣的朋友們已經對Python通過MySQLdb驅動接口來訪問操作MySQL數據庫有了一個基本的入門了解了。
不知您有沒有發現,PyMySQL示例代碼跟上一篇介紹的PyMySQL示例代碼差不多,將之前示例代碼中所有的“pymysql”替換為"MySQLdb"即可。為什么呢?原因就在于它們都遵循Python數據庫API規范v2.0(PEP 249)。
本系列下一篇文章將針對 “Python通過SQLAlchemy-SQL來訪問操作MySQL數據庫” 進行介紹,敬請關注后續文章!
本文為原創,如果文章對您有所幫助,喜歡的話就點個贊加關注支持一下哈:)