从 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()))
。
我正在连接到 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()))
。