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

问题描述 投票:-1回答:1

我已经建立了一个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”访问 - 但不是一个变量的一半而另一半的另一半?

python-3.x for-loop sqlite output
1个回答
0
投票

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

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)
© www.soinside.com 2019 - 2024. All rights reserved.