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 获取。

相关推荐
独好紫罗兰15 分钟前
对python的再认识-基于数据结构进行-a006-元组-拓展
开发语言·数据结构·python
Dfreedom.18 分钟前
图像直方图完全解析:从原理到实战应用
图像处理·python·opencv·直方图·直方图均衡化
铉铉这波能秀33 分钟前
LeetCode Hot100数据结构背景知识之集合(Set)Python2026新版
数据结构·python·算法·leetcode·哈希算法
怒放吧德德1 小时前
Python3基础:基础实战巩固,从“会用”到“活用”
后端·python
aiguangyuan1 小时前
基于BERT的中文命名实体识别实战解析
人工智能·python·nlp
喵手1 小时前
Python爬虫实战:知识挖掘机 - 知乎问答与专栏文章的深度分页采集系统(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集知乎问答与专栏文章·采集知乎数据·采集知乎数据存储sqlite
铉铉这波能秀1 小时前
LeetCode Hot100数据结构背景知识之元组(Tuple)Python2026新版
数据结构·python·算法·leetcode·元组·tuple
kali-Myon1 小时前
2025春秋杯网络安全联赛冬季赛-day2
python·安全·web安全·ai·php·pwn·ctf
Olamyh2 小时前
【 超越 ReAct:手搓 Plan-and-Execute (Planner) Agent】
python·ai
deepxuan2 小时前
Day7--python
开发语言·python