之前寫(xiě)過(guò)一篇關(guān)于python操作mysql數(shù)據(jù)庫(kù)的文章:
https://www.cnblogs.com/MikeZhang/p/pythonOptMysql20170703.html
當(dāng)時(shí)是基于python 2.7 和 mysql 5.5來(lái)整理的,但目前python 2.7已經(jīng)不再維護(hù),主流的是python 3,今天基于python 3.9和mysql 5.7重新整理下訪問(wèn)mysql的文檔,并提供基礎(chǔ)使用示例、代碼封裝類(lèi),以及開(kāi)發(fā)過(guò)程中可能會(huì)遇到的坑。
一、背景材料
?1、pymysql庫(kù)
pymysql是一個(gè)純python實(shí)現(xiàn)的mysql操作庫(kù),安裝及使用起來(lái)比較方便,且可跨平臺(tái)使用。
pypi地址:?https://pypi.org/project/pymysql/
GitHub地址:?https://github.com/PyMySQL/PyMySQL
文檔地址:https://pymysql.readthedocs.io/en/latest/
安裝命令:
pip install pymysql
2、heidisql數(shù)據(jù)庫(kù)訪問(wèn)軟件
Windows環(huán)境數(shù)據(jù)查看工具有很多,heidisql是我日常使用的mysql管理工具,這里也順便提供下。
大致界面如下:
?個(gè)人感覺(jué)的優(yōu)點(diǎn)如下:
1)免費(fèi);
2)提供綠色軟件包,無(wú)需安裝即可使用;
3)對(duì)數(shù)據(jù)庫(kù)的界面操作可實(shí)時(shí)生成sql語(yǔ)句,便于復(fù)制;
官網(wǎng):?https://www.heidisql.com/
目前最新版是12.6,我經(jīng)常使用的是9.4版,heidisql可自行從官網(wǎng)下載,也可從我文末提供的渠道獲?。▋H9.4版和12.6版的綠色包):
關(guān)注微信公眾號(hào)(聊聊博文,文末可掃碼)后回復(fù) 20231112 獲取。
二、基礎(chǔ)使用示例
查看版本信息:
import pymysql print(pymysql.__version__)
數(shù)據(jù)庫(kù)連接:
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()
#! /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訪問(wèn)mysql常見(jiàn)的異常;
2)便于以后直接使用,避免重復(fù)造輪子;
?2、封裝注意事項(xiàng)
1)需要提供檢測(cè)MySQL連接狀態(tài)的的接口,避免query時(shí)鏈接不可用;
2)提供重連機(jī)制;
3)執(zhí)行insert、update語(yǔ)句時(shí),考慮提交頻率,提高執(zhí)行效率;
4)提供回滾功能;
5)pymysql的connect函數(shù)里面autocommit默認(rèn)為False,執(zhí)行select語(yǔ)句時(shí),需要添加主動(dòng)commit動(dòng)作,避免引起MySQL長(zhǎng)事務(wù);
?3、示例代碼
這里提供一個(gè)完整的封裝和使用示例代碼,mysql表結(jié)構(gòu)如下:
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 ;
完整代碼可從如下渠道獲?。?/p>
關(guān)注微信公眾號(hào)(聊聊博文,文末可掃碼)后回復(fù) 20231112 獲取。
運(yùn)行效果如下:
四、資源下載
本文涉及文件和示例代碼從如下途徑獲?。?/p>
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-746135.html
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-746135.html
到了這里,關(guān)于python3使用pymsql操作mysql數(shù)據(jù)庫(kù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!