出于某种原因,当我从 sqlite3 中的 SELECT 语句产生时,我无法遍历表中的所有行。当我将结果作为列表返回时,我拥有所有行。
我不确定我做错了什么......
如果我在外面的某个地方使用它,下面的代码只产生单行:
def items(self):
for row in self._cursor.execute('SELECT key, value FROM dict_table'):
yield (self.loads(row[0]), self.loads(row[1]))
如果我将返回值包装为一个列表,我会得到所有的行:
def iteritems(self):
for row in self._cursor.execute('SELECT key, value FROM dict_table'):
yield (self.loads(row[0]), self.loads(row[1]))
def items(self):
return(list(self.iteritems()))
理想情况下,我只想将它用作生成器,而不是获取整个列表
def items(self):
for row in self._cursor.execute('SELECT key, value FROM dict_table'):
yield (self.loads(row[0]), self.loads(row[1]))
在代码的其他地方,我只想能够运行:
for key, val in self.items():
print(val/key)
编辑:
我也尝试了以下解决方案但没有成功
def iteritems(self):
for row in self._cursor.execute('SELECT key, value FROM dict_table'):
yield (self.loads(row[0]), self.loads(row[1]))
def items(self):
yield from (self.iteritems())
当我尝试迭代项目时,它仍然返回 1 行
繁华开满天机
明月笑刀无情
相关分类