資料庫種類
常見的資料庫有 Oracle、MSSQL 及 MySQL 三種。
Oracle
Oracle 是甲骨文的產品,商業用途需要付費,價格非常昂貴。個人學習可使用免費的 XE 版本。
MSSQL
MSSQL 是微軟的產品,正式版要付費。個人學習可使用免費的 Express 版本,但每個資料庫最大容量限制在 10G 之內,且最多只支援 1 顆 CPU 和 1GB Ram,不適合用於商業用途。
MySQL
MySQL Community 完全免費,沒有 CPU、 Ram 及資料庫最大容量限制,最適合於商業用途。
各種資料庫效能比較
若是大型企業 : 需處理大規模數據及高併發,當然首推 Oracle,但授權費貴且硬体要求非常高,不是一般中小型企業可以負擔的。
若是中小型企業 : MSSQL 及 MySQL 效能都差不多。但 MySQL 完全免費,所以 MySQL 為最佳解決方案。
安裝 MySQL
由上說明,中小企業及個人網站,當然只有 MySQL 一途了。
請先參照 MySQL8.0安裝及環境 把 MySQL Server 安裝起來。
Python 支援 MySQL 的套件種類
Python 當然支援 MySQL 資料庫,常見的套件有如下三種
pymysql : 純 Python 寫成,效能非常差、易當機且不穩定。
mysqlclient : Oracle 官方版本,由 C/C++ 寫成,效能高。
mysql-connecotr-python : Oracle 官方版本,純 Python 寫成,且經過 Oracle 深度優化,執行 ORM(比如 DJango) 時的效能甚至高過 mysqlclient。
經實測,在具有 1000 萬筆以上的資料庫,mysql-connector-python 的效能遠高於 pymysql,且相當穩定。所以強烈建議絕對不能使用 pymysql。
安裝套件
本例需安裝套件
pip install mysql-connector-python
引入套件
引入的套件為 mysql.connector,然後簡化成 mysql
import mysql.connector as mysql
連線
使用 mysql.connect 產生 conn 連線物件,裏面有四個參數,分別是
host : 資料庫伺服器網址或 ip
user : 登入資料庫的帳號
password : 登入資料庫的密碼
database : 資料庫名稱
import mysql.connector as mysql conn=mysql.connect( host="ip", user="帳號", password="密碼", database="資料庫" )
產生命令物件
命令物件通常命名為 cursor ,為執行 SQL 語法的物件,由 conn.cursor 產生而來。
cursor=conn.cursor()
執行 SQL 指令
由 cursor.execute(SQL 指令),若是新增、刪除、修改,最後還需 cursor.commit() 才會開始執行
cursor.execute("insert into 資料表 (欄位1, 欄位2, ...) values (值1, 值2, ....)") cursor.commit()
查尋取回值
如果是 select 查尋指令,則需使用 fetchall 將資料取回,取回的資料為二維 list
cursor.execute("select * from 資料表") rs=cursor.fetchall() for r in rs: print(r)整
關閉連線
操作完資料庫,最後一定要關閉連線,否則會造成資料庫伺服器連線過多耗損記憶体。
conn.close()
完整代碼
完整代碼如下
import mysql.connector as mysql conn=mysql.connect(host="ip",user="帳號", password="密碼", database="資料庫") cursor=conn.cursor() cursor.execute("select count(*) from 資料表") rs=cursor.fetchall() cursor.close() for r in rs: print(r)