操作系統 :Windows 10_x64 python版本 :3.9.2 pymysql版本: 1.0.2 MySQL版本: 5.7.38 之前寫過一篇關於python操作mysql資料庫的文章: https://www.cnblogs.com/MikeZhang/p/pythonOptMysql2 ...
操作系統 :Windows 10_x64 python版本 :3.9.2 pymysql版本: 1.0.2 MySQL版本: 5.7.38
之前寫過一篇關於python操作mysql資料庫的文章:
https://www.cnblogs.com/MikeZhang/p/pythonOptMysql20170703.html
當時是基於python 2.7 和 mysql 5.5來整理的,但目前python 2.7已經不再維護,主流的是python 3,今天基於python 3.9和mysql 5.7重新整理下訪問mysql的文檔,並提供基礎使用示例、代碼封裝類,以及開發過程中可能會遇到的坑。
一、背景材料
1、pymysql庫
pymysql是一個純python實現的mysql操作庫,安裝及使用起來比較方便,且可跨平臺使用。
pypi地址: https://pypi.org/project/pymysql/
GitHub地址: https://github.com/PyMySQL/PyMySQL
文檔地址:https://pymysql.readthedocs.io/en/latest/
安裝命令:
pip install pymysql
2、heidisql資料庫訪問軟體
Windows環境數據查看工具有很多,heidisql是我日常使用的mysql管理工具,這裡也順便提供下。
大致界面如下:
個人感覺的優點如下:
1)免費;
2)提供綠色軟體包,無需安裝即可使用;
3)對資料庫的界面操作可實時生成sql語句,便於複製;
目前最新版是12.6,我經常使用的是9.4版,heidisql可自行從官網下載,也可從我文末提供的渠道獲取(僅9.4版和12.6版的綠色包):
關註微信公眾號(聊聊博文,文末可掃碼)後回覆 20231112 獲取。
二、基礎使用示例
查看版本信息:
import pymysql print(pymysql.__version__)
資料庫連接:
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='', db='mysql') cur = conn.cursor()查詢數據:
cur.execute("SELECT Host,User FROM user") print(cur.description) for row in cur: print(row)關閉連接:
cur.close()
conn.close()
完整示例代碼(mysqlTest1.py):
#! /usr/bin/env python #-*- coding:utf-8 -*- import pymysql conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='123456', db='mysql') cur = conn.cursor() cur.execute("SELECT Host,User FROM user") print(cur.description) for row in cur: print(row) cur.close() conn.close()運行效果:
三、封裝示例
1、為什麼要封裝
1)處理python3訪問mysql常見的異常;
2)便於以後直接使用,避免重覆造輪子;
2、封裝註意事項
1)需要提供檢測MySQL連接狀態的的介面,避免query時鏈接不可用;
2)提供重連機制;
3)執行insert、update語句時,考慮提交頻率,提高執行效率;
4)提供回滾功能;
5)pymysql的connect函數裡面autocommit預設為False,執行select語句時,需要添加主動commit動作,避免引起MySQL長事務;
3、示例代碼
這裡提供一個完整的封裝和使用示例代碼,mysql表結構如下:
CREATE TABLE `user1` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `user_id` VARCHAR(20) NULL DEFAULT '0', `user_name` VARCHAR(20) NULL DEFAULT '0', `password` VARCHAR(20) NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB ;類封裝及使用示例代碼如下(mysqlTest2.py):
完整代碼可從如下渠道獲取:
關註微信公眾號(聊聊博文,文末可掃碼)後回覆 20231112 獲取。
運行效果如下:
四、資源下載
本文涉及文件和示例代碼從如下途徑獲取:
關註微信公眾號(聊聊博文,文末可掃碼)後回覆 20231112 獲取。微信公眾號: