這裡介紹 Python 的 MySQLdb
模組的安裝與使用方法,查詢、新增、修改與刪除 MySQL 資料庫中的資料。
Python 的 MySQLdb
是一個 MySQL 資料庫連接模組,其內部核心是以 C 語言開發的,透過 MySQLdb
包裝成 Python 模組,以下是 MySQLdb
安裝與使用方法。
檢查與安裝 MySQLdb 模組
使用 MySQLdb
模組前,要先確認自己的 Python 是否有安裝,若沒有安裝的話,選擇一種自己喜歡的方式把 MySQLdb
模組裝起來。
檢查是否有安裝 MySQLdb 模組
檢查是否有安裝 MySQLdb
模組的方法就是直接在 Python 的環境中引入 MySQLdb
看看:
import MySQLdb
或是在 Linux 的 shell 底下執行:
python -c "import MySQLdb"
如果執行之後,沒有出現任何訊息,就代表 MySQLdb
模組已經正常安裝好了。
如果您的 Python 環境沒有安裝 MySQLdb
模組的話,就會出現這樣的錯誤訊息:
Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named MySQLdb
以 apt 安裝
在 Debian 或 Ubuntu Linux 中,可以用 apt 安裝:
sudo apt-get install python-mysqldb
以 pip 安裝
若要使用 pip
安裝,步驟如下:
# 安裝 pip sudo easy_install pip # 更新 pip sudo pip install pip --upgrade # 安裝編譯 MySQLdb 所需套件 sudo apt-get build-dep python-mysqldb # 以 pip 安裝 MySQLdb sudo pip install MySQL-python
以原始碼安裝
MySQLdb
的原始碼可以從它的官方網站下載,而編譯與安裝的如下:
sudo tar -zxvf MySQL-python-1.2.4b4.tar.gz cd MySQL-python-1.2.4b4 python setup.py build python setup.py install
使用 MySQLdb 模組
這裡提供幾種常用的 MySQL 資料庫操作範例程式碼。
查詢 MySQL 資料
這是以 Python 透過 MySQLdb
模組接到 MySQL 資料庫資料之後,查詢資料的範例:
#!/usr/bin/python # -*- coding: utf-8 -*- # 引入 MySQLdb 模組,提供連接 MySQL 的功能 import MySQLdb # 連接 MySQL 資料庫 db = MySQLdb.connect(host="localhost", user="db_user", passwd="db_pass", db="db_name") cursor = db.cursor() # 執行 MySQL 查詢指令 cursor.execute("SELECT * FROM db_table") # 取回所有查詢結果 results = cursor.fetchall() # 輸出結果 for record in results: col1 = record[0] col2 = record[1] print "%s, %s" % (col1, col2) # 關閉連線 db.close()
上面這個範例是一次將所有的查詢結果都取回後,再以迴圈輸出。另一種常用的方式是一次只取回一筆查詢結果,這種方式在處理大量資料時,可以節省記憶體空間:
#!/usr/bin/python # -*- coding: utf-8 -*- import MySQLdb db = MySQLdb.connect(host="localhost", user="db_user", passwd="db_pass", db="db_name") cursor = db.cursor() cursor.execute("SELECT * FROM db_table") # 取得資料總筆數 rc = cursor.rowcount # 一次取出一筆資料 for i in range(0, rc): record = cursor.fetchone() col1 = record[0] col2 = record[1] print "%s, %s" % (col1, col2) db.close()
新增 MySQL 資料
以下是插入一筆 MySQL 資料的範例(這裡使用另一篇 MySQL/MariaDB 教學的 products
資料表作為示範):
#!/usr/bin/python # -*- coding: utf-8 -*- import MySQLdb db = MySQLdb.connect(host="localhost", user="db_user", passwd="db_pass", db="db_name", charset="utf8") cursor = db.cursor() # 插入資料 cursor.execute('INSERT INTO products (name, descr, price) ' 'VALUES ("葵花寶典", "蓋世武功密集", 990);') db.commit() db.close()
刪除 MySQL 資料
刪除 MySQL 資料的作法與新增資料類似:
#!/usr/bin/python # -*- coding: utf-8 -*- import MySQLdb db = MySQLdb.connect(host="localhost", user="db_user", passwd="db_pass", db="db_name", charset="utf8") cursor = db.cursor() # 刪除資料 cursor.execute('DELETE FROM products WHERE name = "葵花寶典";') db.commit() db.close()
修改 MySQL 資料
這是修改 MySQL 資料的範例:
#!/usr/bin/python # -*- coding: utf-8 -*- import MySQLdb db = MySQLdb.connect(host="localhost", user="db_user", passwd="db_pass", db="db_name", charset="utf8") cursor = db.cursor() # 刪除資料 cursor.execute('UPDATE products SET descr = "東方不敗的絕世武功" WHERE name = "葵花寶典";') db.commit() db.close()
MySQLdb 中文編碼問題
若要從 MySQL 資料庫中取回 UTF-8 編碼的中文字資料,可以在建立 MySQL 連線時加上 charset
參數:
db = MySQLdb.connect(host="localhost", user="db_user", passwd="db_pass", db="db_name", charset="utf8")
參考資料:StackOverflow