【Python之pymysql库学习】一、分析fetchone()、fetchmany()、fetchall()(保姆级图文+实现代码)

article/2025/10/23 8:45:45

目录

    • 实现效果
    • 实现思路
    • 实现代码
    • 总结


欢迎关注 『Python之pymysql库学习』 系列,持续更新中
欢迎关注 『Python之pymysql库学习』 系列,持续更新中

实现效果

在这里插入图片描述


实现思路

其实有半数代码是创建数据库和创建数据表并插入数据这些环境配置部分····我都写好了,大家运行全部代码k恶意直接拿来即用。
这部分的代码大家可以只运行一次(但我都加入了if判断是否已经建立,也没有关系)

1.fetchone():获取一行数据,用于哪怕是读取一行数据内存都会比较吃力的时候,可以缓解内存压力但是效率最低
2.fetchmany(x):获取x行数据,x为int类型,在fetchone()和fetchall()之间的内存压力和效率,灵活运用
3.fetchall():一次性读取所有数据,数据量比较少的时候用,虽然效率最高,但是数据量很大的话会卡死
4.读取大量数据时的优雅综合应用,这里介绍一种利用迭代器的优雅写法
  1. 连接上主机的数据库
#######连接上主机的数据库#######
conn = pymysql.connect(host='localhost',user='root',password='root',port=3306,autocommit=False,charset="utf8mb4"
)cursor = conn.cursor()  # 创建游标
  1. 创建数据库的sql
########创建数据库的sql#######
# (使用if判断是否已经存在数据库,数据库不存在时才会创建,否则会报错)
cursor.execute("CREATE DATABASE IF NOT EXISTS python")
cursor.execute("USE python")  # 切换到新建的python数据库
  1. 创建数据表
########创建数据库的sql#######
# (使用if判断是否已经存在数据库,数据库不存在时才会创建,否则会报错)
cursor.execute("CREATE DATABASE IF NOT EXISTS python")
cursor.execute("USE python")  # 切换到新建的python数据库
  1. 插入数据
########创建数据表#######
cursor.execute('drop table if EXISTS student')
# 创建表的sql
sql = '''create table student(sno int(8) primary key auto_increment,sname varchar(30) not null,sex varchar(5) ,age int(2),score float(3,1))
'''
cursor.execute(sql)
  1. 读取数据(我们本节的重点)
########插入数据#######
sql = '''insert into student(sname,sex,age,score) values(%s,%s,%s,%s)
'''
add_data_list = [('王朝', 'man', 25, 94.6), ('马汉', 'man', 27, 91.1), ('张龙', 'man', 21, 88.1), ('赵虎', 'man', 22, 97.1)]  # 把数据以列表形式批量插入
cursor.executemany(sql, add_data_list)
cursor.close()########读取数据#######
conn = pymysql.connect(host='localhost', user='root', password='root', database='python', port=3306, autocommit=False)
# # 从excel中读取到学生的sno,sname,sex,age,score并放入数据库
try:with conn.cursor() as cursor:  # 创建游标,在这里conn.cursor()==cursor# 1.fetchone():获取一行数据,用于哪怕是读取一行数据内存都会比较吃力的时候,可以缓解内存压力但是效率最低print("1.fetchone():获取一行数据")cursor.execute('select sno,sname,sex,age,score from student')#每一次读取所有数据后,游标放在末尾,所以测试三个函数时,每次都得重写一次cursor.executerow = cursor.fetchone()#读取一行数据while row:#只要读取到了数据,row不为None也就是不为假就一直读取数据print(row)row = cursor.fetchone()# 2.fetchmany(x):获取x行数据,x为int类型,在fetchone()和fetchall()之间的内存压力和效率,灵活运用print("2.fetchmany(x):获取x行数据")cursor.execute('select sno,sname,sex,age,score from student')row = cursor.fetchmany(2)  # 读取一行数据while row:#只要读取到了数据,row不为None也就是不为假就一直读取数据,缺省的话表示不读取数据print(row)row = cursor.fetchmany(2)# 3.fetchall():一次性读取所有数据,数据量比较少的时候用,虽然效率最高,但是数据量很大的话会卡死print("3.fetchall():一次性读取所有数据")cursor.execute('select sno,sname,sex,age,score from student')row = cursor.fetchall()  # 读取所有数据,看起来最简单,但是要注意,这是建立在数据量小,硬件跟得上的基础上的。print(row)# 4.读取大量数据时的优雅综合应用,这里介绍一种利用迭代器的优雅写法print("4.读取大量数据时的优雅综合应用")cursor.execute('select sno,sname,sex,age,score from student')for row in iter(lambda:cursor.fetchone(),None):#逐行读取row,如果cursor.fetchone()为None,结束for循环print(row)except pymysql.MySQLError as err:  # 捕获异常print(err)  # 如果出现异常,打印错误信息
finally:conn.close()  # 无论如何都要关闭连接,节省资源占用

实现代码

# @Time    : 2022/1/16 16:44
# @Author  : 南黎
# @FileName: 一.分析三种fetch.py
import pymysql
import openpyxl  # 用户操作excel的库#######连接上主机的数据库#######
conn = pymysql.connect(host='localhost',user='root',password='root',port=3306,autocommit=False,charset="utf8mb4"
)cursor = conn.cursor()  # 创建游标########创建数据库的sql#######
# (使用if判断是否已经存在数据库,数据库不存在时才会创建,否则会报错)
cursor.execute("CREATE DATABASE IF NOT EXISTS python")
cursor.execute("USE python")  # 切换到新建的python数据库########创建数据表#######
cursor.execute('drop table if EXISTS student')
# 创建表的sql
sql = '''create table student(sno int(8) primary key auto_increment,sname varchar(30) not null,sex varchar(5) ,age int(2),score float(3,1))
'''
cursor.execute(sql)########插入数据#######
sql = '''insert into student(sname,sex,age,score) values(%s,%s,%s,%s)
'''
add_data_list = [('王朝', 'man', 25, 94.6), ('马汉', 'man', 27, 91.1), ('张龙', 'man', 21, 88.1), ('赵虎', 'man', 22, 97.1)]  # 把数据以列表形式批量插入
cursor.executemany(sql, add_data_list)
cursor.close()########读取数据#######
conn = pymysql.connect(host='localhost', user='root', password='root', database='python', port=3306, autocommit=False)
# # 从excel中读取到学生的sno,sname,sex,age,score并放入数据库
try:with conn.cursor() as cursor:  # 创建游标,在这里conn.cursor()==cursor# 1.fetchone():获取一行数据,用于哪怕是读取一行数据内存都会比较吃力的时候,可以缓解内存压力但是效率最低print("1.fetchone():获取一行数据")cursor.execute('select sno,sname,sex,age,score from student')#每一次读取所有数据后,游标放在末尾,所以测试三个函数时,每次都得重写一次cursor.executerow = cursor.fetchone()#读取一行数据while row:#只要读取到了数据,row不为None也就是不为假就一直读取数据print(row)row = cursor.fetchone()# 2.fetchmany(x):获取x行数据,x为int类型,在fetchone()和fetchall()之间的内存压力和效率,灵活运用print("2.fetchmany(x):获取x行数据")cursor.execute('select sno,sname,sex,age,score from student')row = cursor.fetchmany(2)  # 读取一行数据while row:#只要读取到了数据,row不为None也就是不为假就一直读取数据,缺省的话表示不读取数据print(row)row = cursor.fetchmany(2)# 3.fetchall():一次性读取所有数据,数据量比较少的时候用,虽然效率最高,但是数据量很大的话会卡死print("3.fetchall():一次性读取所有数据")cursor.execute('select sno,sname,sex,age,score from student')row = cursor.fetchall()  # 读取所有数据,看起来最简单,但是要注意,这是建立在数据量小,硬件跟得上的基础上的。print(row)# 4.读取大量数据时的优雅综合应用,这里介绍一种利用迭代器的优雅写法print("4.读取大量数据时的优雅综合应用")cursor.execute('select sno,sname,sex,age,score from student')for row in iter(lambda:cursor.fetchone(),None):#逐行读取row,如果cursor.fetchone()为None,结束for循环print(row)except pymysql.MySQLError as err:  # 捕获异常print(err)  # 如果出现异常,打印错误信息
finally:conn.close()  # 无论如何都要关闭连接,节省资源占用

总结

大家喜欢的话,给个👍,点个关注!给大家分享更多有趣好玩的Python知识!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2022 mzh

Crated:2022-1-15

欢迎关注 『Python之pymysql库学习』 系列,持续更新中
欢迎关注 『Python之pymysql库学习』 系列,持续更新中
【1.创建数据库(保姆级图文+实现代码)】
【2.创建数据表(保姆级图文+实现代码)】
【3.数据表插入单条数据(保姆级图文+实现代码)】
【4.数据表插入多条数据(保姆级图文+实现代码)】
【5.数据表更新(保姆级图文+实现代码)】
【6.数据库删除操作(保姆级图文+实现代码)】
【7.数据表查询操作(保姆级图文+实现代码)】
【8.数据库导出数据为excel文件(保姆级图文+实现代码)】
【9.excel导入数据到数据库(保姆级图文+实现代码)】
【数据库创建-数据表增删改查-数据表导出为excel-excel导入数据到数据库-专栏合集(实现代码注释详细)】
【一、分析fetchone()、fetchmany()、fetchall()(保姆级图文+实现代码)】
【二.游标cursor的相关知识(保姆级图文+实现代码)】
【三.sql语句的相关知识(保姆级图文+实现代码)】
【更多内容敬请期待】



http://chatgpt.dhexx.cn/article/5NoQFNRO.shtml

相关文章

fetchone、fetchall

fetchone(): 该方法获取下一个查询结果集。结果集是一个对象,读取一行结果,读取完指向下一行,到空为止 fetchall():接收全部的返回结果行,到空为止 fetchone() : 返回单个的元组,也就是一条记录(row),如果没…

python fetchall方法_Python连接MySQL并使用fetchall()方法过滤特殊字符

python3.3从mysql里取出的数据莫名其妙有括号和逗号每天跟自己喜欢的人一起,通电话,旅行,重复一个承诺和梦想,听他第二十八次提起童年往事,每年的同一天和他庆祝生日,每年的情人节圣诞节除夕,也…

pdo fetchAll

作用 fetchAll()方法是获取结果集中的所有行.其返回值是一个包含结果集中所有数据的二维数组。 PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument[, array$ctor_args array() ]]] ) fetch_style:控制结果的返回方式 PDO::FETCH_ASSOC 关联数组形式 PD…

记录一个常用函数fetchall()的使用过程

fetchall() 作用是返回多个元组,即对应数据库里的多条数据概念; 常见用法是 cursor.execute(‘select * from table’) value cursor.fetchall() 此时,print(value)则会输出以下二维元组,如下图 拓展: 同类函数fet…

Python从Oracle数据库中获取数据——fetchall(),fetchone(),fetchmany()函数功能分析

Python从Oracle数据库中获取数据——fetchall(),fetchone(),fetchmany()函数功能分析 一、fetchall(),fetchone(),fetchmany()简单介绍 1、fetchall()函数,它的返回值是多个元组,即返回多个行记录,如果没有结果,返回的是() 2、fetchone()函数,它的返回…

KITTI数据集可视化(一):点云多种视图的可视化实现

如有错误,恳请指出。 在本地上,可以安装一些软件,比如:Meshlab,CloudCompare等3D查看工具来对点云进行可视化。而这篇博客是将介绍一些代码工具将KITTI数据集进行可视化操作,包括点云鸟瞰图,FOV…

KITTI数据集的点云格式转PCD格式

参考文章:https://blog.csdn.net/xinguihu/article/details/78922005 KITTI数据集应该不用多做介绍了,基本上做自动驾驶的都知道这个东西。最近本人用到这个数据集想看看里面的点云长什么模样,却发现有点别扭,没有直接可以看的工…

使用kitti数据集实现自动驾驶——发布照片、点云、IMU、GPS、显示2D和3D侦测框

本次内容主要是使用kitti数据集来可视化kitti车上一些传感器(相机、激光雷达、IMU)采集的资料以及对行人和车辆进行检测并在图像中画出行人和车辆的2D框、在点云中画出行人和车辆的3D框。 首先先看看最终实现的效果: 自动驾驶视频 看了上面的…

KITTI数据集-label解析笔记

笔记摘自:KITTI数据集--label解析与传感器间坐标转换参数解析_苏源流的博客-CSDN博客 KITTI数据集是自动驾驶领域最知名的数据集之一。 一、kitti数据集,label解析 16个数代表的含义: 第1个字符串:代表目标的类别 Car, Van, Tru…

16个车辆信息检测数据集收集汇总(简介及链接)

16个车辆信息检测数据集收集汇总(简介及链接) 转载自:https://blog.csdn.net/u014546828/article/details/109089621?utm_mediumdistribute.pc_relevant.none-task-blog-baidujs_baidulandingword-1&spm1001.2101.3001.4242 目录 1. UA-DETRAC …

双目网络公开数据集的特性

文章目录 概述SceneFlowKITTI 2012 & 2015ETH3D 2017Middlebury 2014 概述 参考文章:Rethinking Training Strategy in Stereo Matching 主流双目公开数据集有:SceneFlow、KITTI、ETH3D、MB。 各个双目网络主流训练数据视差分布的直方图:…

KITTI数据集下载及介绍

KITTI数据集下载及介绍 KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。该数据集用于评测立体图像(stereo),光流(optical flow),视觉测距(visual odometry…

KITTI 数据集--下载链接

Visual Odometry / SLAM Evaluation 2012 数据集主页:The KITTI Vision Benchmark Suite (cvlibs.net) 里程计基准由22个立体序列组成,以无损失png格式保存。 11个具有真实轨迹的序列(00-10)用于训练,11个没有真实…

KITTI数据集下载及解析

KITTI数据集下载及解析 W.P. Xiao, Vision group,SHUSV 版本更新时间更新内容作者1V 1.02020.01.09完成主体内容W.P. Xiao2 文章目录 KITTI Dataset1 简介1.1 数据采集平台1.2 坐标系 2 数据解析2.1 image文件2.2 velodyne文件2.3 calib文件2.4 label文件 3 KITTI可…

无人驾驶之KITTI数据集介绍与应用(一)——数据组织方式介绍

本系列博客旨在介绍无人驾驶领域中颇负盛名的KITTI公开数据集,首先整体介绍该数据集的由来、数据组织方式、官方开发工具的使用,重点详细介绍其中对于Object、Tracking和raw data的数据使用,主要分享了我在使用这些数据集时开发的一些工具&am…

waymo数据集总结

参考资料 官网: https://waymo.com/open/data/perception/#lidar-data 文章: https://arxiv.org/pdf/1912.04838.pdf github: https://github.com/waymo-research/waymo-open-dataset colab教程: https://colab.research.google.…

KITTI数据集介绍

目录 1、KITTI数据集概述2、kitti数据采集平台3、Kitti数据集标注格式参考文献: 1、KITTI数据集概述 KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的算法评测数据集。该数据集用于评测立体图像(…

KITTI 数据集简介

数据集简介 KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上自动驾驶场景下常用的数据集之一。KITTI数据集的数据采集平台装配有2个灰度摄像机,2个彩色摄像机,一个Velodyne 64线3D激光雷达,4个光…

KITTI数据集简析

文章目录 KITTI数据集数据集结构数据集内容data_object_calib 样本标定数据data_object_label_2 3D点云标注文件 KITTI数据集 数据集结构 KITTI数据集网盘 提取码:0bjl KITTI ├── devkit_object | ├── cpp | ├── mapping | ├── matlab | └─…

KITTI数据集(概念版)

一、参考资料 KITTI 官网 kitti数据集各个榜单介绍 自动驾驶KITTI数据集详解 KITTI数据集简介与使用 kitti数据集各个榜单介绍 KITTI数据集介绍 KITTI数据集简介(一) — 激光雷达数据 【KITTI】KITTI数据集简介(二) — 标注数据l…