从 SQLite 查询中获取迭代器元组

Get Iterator Tuple from SQLite Query

我正在连接到 SQLite 数据库。在python查询数据库时,它returns一个元组对象。我更喜欢与 namedtuple 一起工作。问题是我不能多次遍历对象。我不确定问题是出在我创建对象的方式上,还是与我将数据分配给对象的方式有关。这是我拥有的:

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

table 目前只有 3 个条目。所以我应该重复所有 3 个条目,因为第二个循环,但我没有。

我试过更改一些行,类似于 Docs page 上显示的内容,但没有帮助。

mgilson 所发,data = map(data._make, c.fetchall()) 需要更改为 data = list(map(data._make, c.fetchall()))