2016-12-23 1 views
0

SQLite 데이터베이스에 연결 중입니다. 파이썬에서 데이터베이스를 질의 할 때, 튜플 객체를 반환합니다. 나는 namedtuple과 일하기를 더 좋아합니다. 문제는 개체를 두 번 이상 반복 할 수 없다는 것입니다. 문제가 내가 객체를 만드는 방법과 관련이 있는지 또는 객체에 데이터를 할당하는 것과 관련이 있는지 확실하지 않습니다. 여기에 내가 가지고있는 것 :SQLite 쿼리에서 Iterator Tuple 가져 오기

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에 표시된 것과 비슷한 일부 줄을 변경해 보았지만 도움이되지 않았습니다.

+1

python3.x에서'map'은 반복 가능한 객체를 반환합니다 - 여러 번 반복 할 수 없습니다. 당신은'data = list (map (data._make, c.fetchall()))'를 시도 할 수있다. – mgilson

답변

0

게시자 : mgilson, data = map(data._make, c.fetchall())data = list(map(data._make, c.fetchall()))으로 변경해야합니다.