当前位置:  开发笔记 > 编程语言 > 正文

在SQLite中导航光标行(我们可以回放/重置光标,例如回到第一行吗?)

如何解决《在SQLite中导航光标行(我们可以回放/重置光标,例如回到第一行吗?)》经验,为你挑选了1个好方法。

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

Cursor.fetchone()

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

Cursor.fetchmany()

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

Cursor.fetchall()

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

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

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

任何帮助,将不胜感激.

艾伦



1> David Z..:

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

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

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

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

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有