在sqlite数据库上进行迭代时,为什么for循环变量跳过第二行?

时间:2019-04-15 19:05:42

标签: python-3.x for-loop sqlite output

我已经建立了一个sqlite数据库,该数据库记录了一些世界贸易数据。 我正在数据库上进行迭代,并希望提取一些数据,这些数据将流入该类的另一种方法中(有效-没问题)。

但是,遍历数据库有两个变量“ row”和“ l”:

  
    

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

  

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

我尝试在新循环中以不同的方式通过“行”和“ 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”访问数据-但不能在一个变量中访问一半,而在另一个变量中访问另一半?

1 个答案:

答案 0 :(得分: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)