MySQL基礎

      在〈MySQL基礎〉中尚無留言

資料庫種類

常見的資料庫有 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)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *