python3使用pymsql操作mysql數據庫

操作系統 :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語句,便於複製;

官網: https://www.heidisql.com/

目前最新版是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 獲取。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章