gpt4 book ai didi

python - 在 SQLite 中导航游标行(我们可以倒带/重置游标,例如返回第一行吗?)

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:22 24 4
gpt4 key购买 nike

我试图了解以下内置函数在顺序处理游标行时的工作原理。描述来自Python 3.1手册(使用SQLite3)

Cursor.fetchone()

获取查询结果集的下一行,返回单个序列。

Cursor.fetchmany()

获取查询结果的下一组行,返回一个列表。

Cursor.fetchall()

获取查询结果的所有(剩余)行,返回一个列表。

所以如果我有一个循环,在这个循环中我使用 cursor.fetchone() 一次处理一行,而后面的一些代码要求我返回到第一行,或者使用 fetchall() 获取所有行,如何我做吗?

这个概念对我来说有点奇怪,特别是来自 Foxpro 背景,它具有记录指针的概念,可以移动到游标中的第一行或最后一行(转到顶部/底部),或者转到第 n 行 (go n)

如有任何帮助,我们将不胜感激。

艾伦

最佳答案

Python 3.1 中的 SQLite 接口(interface)基于 PEP 249 , 它只指定游标必须支持对查询结果记录的顺序访问。没有办法回去。如果您需要返回到以前获取的行,您应该在第一次获取它时保存它,例如创建获取数据的列表(或者实际上,只需使用 fetchall)。然后,您可以使用该列表,并根据需要在行之间来回移动。

DB API 设计背后的理念是支持高效执行代码,您只需处理每一行一次。典型的循环如下所示:

for a,b,c in cursor.fetchone():
# process it

这样,一旦循环的相应迭代完成,游标就可以丢弃对每一行数据的引用。它并没有真正丢失任何东西,因为如果你想保留所有数据,你总是可以从中列出一个列表,但是处理大型数据集的应用程序仍然能够一次处理一行。这有点像当您需要一个一个地处理可迭代的元素时使用生成器表达式而不是列表的原因。

关于python - 在 SQLite 中导航游标行(我们可以倒带/重置游标,例如返回第一行吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2796517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com