Я подключаюсь к базе данных SQLite. При запросе базы данных в python он возвращает объект кортежа. Я предпочитаю работать с namedtuple
. Проблема в том, что я не могу проходить через объект более одного раза. Я не уверен, что проблема связана с тем, как я создаю объект, или если это связано с тем, как я назначаю данные объекту. Вот что у меня есть:Получить Iterator Tuple из SQLite Query
import sys
import sqlite3
from collections import namedtuple
data = namedtuple('data', 'id, name')
conn = sqlite3.connect('database.db')
c = conn.cursor()
c.execute('SELECT id,name FROM my_table;')
data = map(data._make, c.fetchall())
conn.close()
for id in data:
print (table.id)
for id in data:
print (table.id)
>>>123
>>>456
>>>789
Сейчас в таблице всего 3 записи. Поэтому я должен повторить все 3 записи из-за второго цикла, но я этого не делаю.
Я попытался изменить некоторые линии, похожие на то, что показано на Docs page, но это не помогло.
На python3.x, 'map' возвращает итерируемый объект, который не может повторяться несколько раз. Вы можете попробовать 'data = list (map (data._make, c.fetchall()))' ... – mgilson