为什么在迭代sqlite数据库时for-loop变量会跳过每隔一行?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么在迭代sqlite数据库时for-loop变量会跳过每隔一行?相关的知识,希望对你有一定的参考价值。

我已经建立了一个sqlite数据库,它记录了一些世界交易数据。我正在迭代数据库,并希望提取一些数据,这将流入该类的另一个方法(工作 - 没问题)。

但是,迭代数据库我有两个变量“row”和“l”:

对于数据库中的行(“...”): l = self.c.fetchone()

奇怪的是,一半数据位于变量“row”中,另一半位于“l”中。我花了很长时间才弄明白,但现在我真的不知道,为什么会出现这个问题?如果我遍历list / db for“row” - “row”应该包含每次迭代的所有数据?

我尝试从不同的方式通过“行”和“l”访问行,从一个新的循环 - 重写循环并重组它们,但后来我有太多的数据和2000多个入口点?我使用fetchmany() - 并使另一个(外部)循环迭代,...

for row in self.c.execute("SELECT order_number,quotaStart,valid FROM volume"):
            l = self.c.fetchone()
            count+=1
            print(count,">>",row)
            print(count,">>",l)

我希望数据可以通过“行”或“l”访问 - 但不是一个变量的一半而另一半的另一半?

答案

您正在混合使用两种不同的方式来访问查询结果。最简单的方法是:

for row in self.c.execute("SELECT order_number,quotaStart,valid FROM volume"):
    print(count, ">>", row)

或者:

self.c.execute("SELECT order_number,quotaStart,valid FROM volume"):
while l = self.c.fetchone():
    print(count, ">>", l)

以上是关于为什么在迭代sqlite数据库时for-loop变量会跳过每隔一行?的主要内容,如果未能解决你的问题,请参考以下文章

迭代(for-loop)毫秒访问过去的值

For-Loop一个带有负迭代器的“空”向量?

如何在.innerHTML(for-loop)中迭代字符串的每个字符?

为啥这段代码变慢了?

更新 SQLite 数据库 Android RecyclerView 迭代

CriminalIntent项目的迭代