Python 3.x 为什么在迭代sqlite数据库时for循环变量每隔一行就跳过一次?
我已经建立了一个sqlite数据库,它记录了一些世界贸易数据。 我正在对数据库进行迭代,并希望提取一些数据,这些数据将流入该类的另一个方法(有效-没有问题) 但是,在数据库上迭代时,我有两个变量“row”和“l”: 对于数据库中的行(“…”):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,“行”应该包含每次迭代的所有数据吗 我试着从不同的方式通
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
也会提前一行。