1. 程式人生 > 其它 >Python——如何使用python連線MySQL資料庫

Python——如何使用python連線MySQL資料庫

 


特別提醒:本人看部落格園的訊息還是比較少,如果對本文有疑問,可以發郵件到 [email protected]   我看郵箱還是比較勤快的 :)


本文主要涉及:

  1. 遠端的MySQL環境配置
  2. Python連線MySQL資料庫
  3. 對Pymysql庫的封裝
  4. Python讀寫MySQL資料

系統環境:

  • Windows 10 企業版 LTSC 64bit
  • Python 3.6.6
  • WAMP(3.0.6 32bit)整合的MySQL版本為5.7.14

1. MySQL的環境配置

如果想連線本地資料庫,必須先安裝MySQL服務。可以選擇使用官方安裝包,或者使用PHP整合環境中的資料庫都可以(windows平臺上的有wamp或者phpstudy)。

我這裡使用的是內網其他電腦上的MySQL資料庫,這就需要在資料庫裡開啟遠端訪問。

1.1 啟用MySQL的區域網訪問

想讓區域網中的所有機器都能連線MySQL資料庫,首先要給MySQL開啟遠端連線的功能,在MySQL伺服器控制檯上執行MySQL命令:

1 grant all privileges on *.* to root@"%" identified by 'abc' with grant option;  
2 flush privileges;

其中上面兩行程式碼的意思是給從任意ip地址連線的使用者名稱為root,密碼為abc的使用者賦予所有的許可權。其中的"%"為任意的ip地址,如果想設為特定的值也可以設定為特定的值(以萬用字元%的內容增加主機/IP地址,也可以直接增加IP地址)

例如:

1 grant all privileges on *.* to root@"192.168.1.1" identified by 'abc' with grant option;  
2 flush privileges;

這裡就是指 192.168.1.1這個IP的機器可以使用 root /abc 這個賬戶遠端訪問MySQL資料庫

PS:資料連線工具推薦使用Navicat,可以同時連線不同的資料庫,非常方便。

我常用的是11.0.16版本   下載地址   提取碼: s5kt

1.2 python環境設定

資料庫配置好之後,在python裡,首先要確保已經安裝了pymysql,這裡給出關鍵命令。

python -m pip install --upgrade pip
python -m pip install -U pip setuptools
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install pymysql

以上命令的含義是:

1.  更新pip

2.  更新pip的setuptools

3.  將pip的預設源設定為清華大學源

4.  安裝pymysql庫



2. MySQL連線庫函式封裝

在按照上述步驟配置了環境支援後,就可以在python使用程式碼連線MySQL了。

原生的用法示例:

import pymysql
# IP地址、使用者名稱、密碼、資料庫
db = pymysql.connect("127.0.0.1", "root", "", "test")

# 使用 cursor() 方法建立一個遊標物件 cursor
cursor = db.cursor()

# 使用 execute()  方法執行 SQL 查詢
cursor.execute("SELECT VERSION()")

# 使用 fetchone() 方法獲取單條資料.
data = cursor.fetchone()

print("Database version : %s " % data)

cursor.execute("INSERT INTO ygxm (ID,Name) VALUES('9999','使用者0078')")

# 關閉資料庫連線
db.close()

 

這裡給原生的庫做了一個簡單的封裝:

import pymysql

# MySQL 操作類


class MySQL:
    def __init__(self, host, user, pwd, db):
        self.host = host
        self.user = user
        self.pwd = pwd
        self.db = db

    def __GetConnect(self):
        """
        得到連線資訊
        返回: conn.cursor()
        """
        if not self.db:
            raise(NameError, "沒有設定資料庫資訊")
        self.conn = pymysql.connect(
            host=self.host, user=self.user, password=self.pwd, database=self.db)
        cur = self.conn.cursor()
        if not cur:
            raise(NameError, "連線資料庫失敗")
        else:
            # print('連線成功!')
            return cur

    def ExecQuery(self, sql):
        """
        執行查詢語句
        返回的是一個包含tuple的list,list的元素是記錄行,tuple的元素是每行記錄的欄位

        """
        cur = self.__GetConnect()
        cur.execute(sql)
        rows = cur.fetchall()
        resList = []
        for row in rows:
            resList.append(list(row))  # 每一行都轉換成列表
        # 查詢完畢後必須關閉連線
        self.conn.close()
        return resList

    def ExecNonQuery(self, sql):
        """
        執行非查詢語句

        呼叫示例:
            cur = self.__GetConnect()
            cur.execute(sql)
            self.conn.commit()
            self.conn.close()
        """
        cur = self.__GetConnect()
        cur.execute(sql)
        self.conn.commit()
        self.conn.close()

 

呼叫示例:

mysql_conn = MySQL(host='127.0.0.1', user="root", pwd="", db="test")
sql_string = "SELECT VERSION()"
result = mysql_conn.ExecQuery(sql_string)
print(result)

輸出為:

[['5.7.14']]

至此,資料庫連線成功!



3. Python對MySQL資料庫的 CURD

3.1 讀取MySQL資料

程式碼如下:


3.2 更新資料到MySQL




 


特別提醒:本人看部落格園的訊息還是比較少,如果對本文有疑問,可以發郵件到 [email protected]   我看郵箱還是比較勤快的 :)