Python 3.x 为什么在迭代sqlite数据库时for循环变量每隔一行就跳过一次?

Python 3.x 为什么在迭代sqlite数据库时for循环变量每隔一行就跳过一次?,python-3.x,for-loop,sqlite,output,Python 3.x,For Loop,Sqlite,Output,我已经建立了一个sqlite数据库,它记录了一些世界贸易数据。 我正在对数据库进行迭代,并希望提取一些数据,这些数据将流入该类的另一个方法(有效-没有问题) 但是,在数据库上迭代时,我有两个变量“row”和“l”: 对于数据库中的行(“…”): l=self.c.fetchone() 奇怪的是,一半的数据在变量“row”中,另一半在“l”中。我花了很长时间才弄明白,但现在我真的不知道,为什么会发生这个问题?如果我迭代“行”的list/db,“行”应该包含每次迭代的所有数据吗 我试着从不同的方式通

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

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

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

奇怪的是,一半的数据在变量“row”中,另一半在“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”来访问,但不能一半在一个变量中,另一半在另一个变量中?

您混淆了两种不同的访问查询结果的方法。最简单的方法是:

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)

尝试删除
l=self.c.fetchone()
,只使用
row
如果循环结果,则每次迭代都会提前一行
fetchone
也会提前一行。