5

python3使用pymsql操作mysql数据库

 9 months ago
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.
neoserver,ios ssh client
操作系统 :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管理工具,这里也顺便提供下。

大致界面如下:

300959-20231112173826885-1740631523.png

 个人感觉的优点如下:

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()
运行效果:
300959-20231112174103910-664804969.png

 三、封装示例

 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):
300959-20231112175237719-229196552.png

完整代码可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20231112 获取。

运行效果如下:

300959-20231112192505781-114996937.png

四、资源下载

本文涉及文件和示例代码从如下途径获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20231112 获取。
300959-20231112192702188-1391123666.png

Recommend

  • 117
    • www.10tiao.com 6 years ago
    • Cache

    MySQL数据库的查询操作

    点击上方“程序员大咖”,选择“置顶公众号” 关键时刻,第一时间送达!

  • 7

    MySQL 数据库操作笔记若干 谢益辉 / 2009-05-22 学习最好的方法莫过于实践,最快的途径莫过于示例,这段时间网站搬家,迫使我不断去看一些 SQL 操作方法,最终记载于此,以便将来参考。 1、时间操作 例:将 GMT...

  • 12

    MySQL语句规范关键字大写 字段名、表名使用反引号包裹 使用一个值时,需要使用引号包裹连接数据库语法$变量 = mysqli_connetc('数据库所在电脑IP', '数据库用户名', '数据库密码', '操作数据库中的...

  • 8
    • segmentfault.com 2 years ago
    • Cache

    golang操作MySQL数据库总结

    golang操作MySQL数据库总结本文视频链接:https://www.bilibili.com/vide...关注公众号,下载课程资料和源...

  • 5
    • blog.51cto.com 2 years ago
    • Cache

    Mysql 数据库之高级操作

    Mysql 数据库之高级操作 原创 呼噜呼噜懒洋洋 2022-03-03 20:53:23...

  • 4
    • liangbogopher.github.io 2 years ago
    • Cache

    MySQL 数据库基本 SQL 操作

    MySQL 数据库基本 SQL 操作 数据库 | Apr 21, 2018 | MySQL

  • 3
    • blog.51cto.com 2 years ago
    • Cache

    MySQL数据库(4):数据表操作

    数据表操作 创建数据表 1、基本语法 create table 表名 ( 字段名 字段类型 [字段属性], 字段名 字段类型 [字段属性], ... ) [表选项];

  • 7

    Python 操作 MySQL 数据库的三个模块 作者:云朵君 2022-09-01 23:29:22 python使用MySQL主要有两个模块,pymysql(MySQLdb)和SQLAchemy。 ​python使用M...

  • 3

    【笔记】Python3 操作 Sqlite3 数据库 2023-07-07

  • 5
    • www.cnblogs.com 9 months ago
    • Cache

    python3使用pandas备份mysql数据表

    操作系统 :CentOS 7.6_x64 Python版本:3.9.12 MySQL版本:5.7.38 日常开发过程中,会遇到mysql数据表的备份需求,需要针对单独的数据表进行备份并定时清理数据。 今天记录下python3如何使用pandas进行mysql数据表的备份,我将从以下几...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK