Python——如何使用python連線MySQL資料庫
阿新 • • 發佈:2022-04-20
特別提醒:本人看部落格園的訊息還是比較少,如果對本文有疑問,可以發郵件到 [email protected] 我看郵箱還是比較勤快的 :)
本文主要涉及:
- 遠端的MySQL環境配置
- Python連線MySQL資料庫
- 對Pymysql庫的封裝
- 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] 我看郵箱還是比較勤快的 :)