

python3使用pymsql操作mysql数据库
source link: https://www.cnblogs.com/MikeZhang/p/pymyqlExample20231112.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

之前写过一篇关于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()
#! /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 ;

完整代码可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20231112 获取。
运行效果如下:

四、资源下载
本文涉及文件和示例代码从如下途径获取:

Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK