相关链接
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
Mysql学习笔记(二):数据库命令行代码总结
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
Mysql学习笔记(四):Python与Mysql交互–实现增删改查
✅💖⚠️▶️➡️🌿🍀🍄🌟⭐❄️✅💖⚠️▶️➡️🌿🍀🍄🌟⭐❄️✅💖⚠️▶️➡️🌿🍀🍄🌟⭐❄️✅💖⚠️
在数据库操作中,使用 Python 与数据库进行交互时,fetchone
、fetchmany
和 fetchall
是几个非常重要的方法,它们在从数据库获取查询结果时发挥着关键作用,以下为你详细介绍:
fetchone
fetchone
是数据库游标对象提供的一个方法,主要用于从数据库查询结果集中获取单个元组。简单来说,它返回的是一条记录(row)。这个方法就像是从数据库这个“大仓库”里精确地取出一件物品。
当执行一个 SQL 查询语句后,数据库会返回相应的结果集。fetchone
方法会从这个结果集中取出第一条记录,并以元组的形式返回。例如,在一个存储用户信息的数据库表中,假设我们执行了一个查询语句来获取某个特定用户的信息,fetchone
方法就会返回包含该用户各项信息的一个元组。
需要注意的是,如果查询结果集中没有任何记录,也就是说查询没有找到符合条件的结果,那么 fetchone
方法将返回 None
。这就好比在仓库里寻找一件特定的物品,但这件物品根本不存在,此时就会得到一个表示“没有找到”的信号,在 Python 中这个信号就是 None
。
fetchmany
fetchmany
方法同样是数据库游标对象的一个方法,它的作用是从数据库查询结果集中获取多个元组,即返回多条记录(rows)。与 fetchone
每次只取一条记录不同,fetchmany
允许我们一次性获取多条记录,这在需要批量处理数据的场景中非常有用。
使用 fetchmany
方法时,我们需要指定要获取的记录数量。例如,调用 fetchmany(2)
,它会从结果集中取出两条记录,并以元组的形式返回这两条记录。这里的元组嵌套了两个子元组,每个子元组代表一条记录。
如果在调用 fetchmany
方法时没有指定具体的数量,那么它默认会返回 1 条记录。这就相当于如果没有明确告诉它要取多少条,它就按照“保守”的方式只取一条记录。
fetchall
fetchall
方法也是游标对象的重要成员,它的功能是从数据库查询结果集中获取所有的元组,也就是返回所有符合查询条件的记录(rows)。可以把它想象成将整个查询结果集一次性“打包”取出来。
当执行一个查询操作后,fetchall
方法会遍历整个结果集,将所有记录以元组的形式返回。这个返回的元组包含了多个子元组,每个子元组对应一条记录。例如,如果查询结果集有 10 条记录,那么 fetchall
方法返回的就是一个包含 10 个子元组的大元组。
与 fetchone
类似,如果查询结果集中没有任何记录,即查询没有找到符合条件的结果,fetchall
方法将返回一个空元组 ()
。这表明结果集中没有任何数据。
需要特别说明的是,在数据库领域,不同的数据库系统对于空值的表示方式有所不同。在 MySQL 数据库中,空值通常用 NULL
来表示;而在 Python 语言中,与之对应的空值表示为 None
。这种差异在进行数据库与 Python 交互编程时需要特别注意,以确保数据的正确处理和逻辑的准确性。
实际操作
进入数据库
选择数据库
创建数据表
create table test(
id int unsigned primary key auto_increment not null,
name varchar(150) not null,
timestamp varchar(50) not null);
插入数据:此时我插入了两个相同时间,不同名字的数据。
如果我们想要根据timestamp 2021_12_28_10_03来获取当前时间所有的人名信息。
这就需要了解fatchone、fatchmany、fatchall的操作了。
fatchone
只能获取一条(主键id从小到大找)
- sql语句
- 输入:timestamp=2021_12_28_10_03
- 输出:
fatchmany
需要指定输出多少条记录,比如说2会固定输出两条记录,如果是默认则为第一条记录
- sql语句
- 输入:timestamp=2021_12_28_10_03
- 输出:
fatchall
能获取指定时间下所有满足条件的信息。
- sql语句
- 输入:timestamp=2021_12_28_10_03
- 输出:
✅💖⚠️▶️➡️🌿🍀🍄🌟⭐❄️✅💖⚠️▶️➡️🌿🍀🍄🌟⭐❄️✅💖⚠️▶️➡️🌿🍀🍄🌟⭐❄️✅💖⚠️