По какой-то причине я не могу выполнить итерацию по всем строкам таблицы, если получаю результат из инструкции SELECT в sqlite3.Когда я возвращаю результат в виде списка, у меня есть все строки.
Я не уверен, что я делаю неправильно ...
Приведенный ниже код выдает только одну строку, если я использую его где-то снаружи:
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 строку, когда я пытаюсь перебрать элементы