2016-12-23 3 views
0

からイテレータのタプルを取得する私は、SQLiteデータベースに接続しています。 Pythonでデータベースにクエリを実行すると、タプルオブジェクトが返されます。私はnamedtupleで動作することを好みます。問題は、オブジェクトを複数回反復することができないことです。私は、問題は、私は、オブジェクトを作成していれる方法であるのかはわからないか、それは私がオブジェクトにデータを代入していますどのように関係している場合。ここに私が持っているものは次のとおりです:SQLiteのクエリ

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つのエントリしかありません。だから私は、2番目のループのために、3つのエントリをすべて繰り返す必要がありますが、私はしません。

私はDocs pageに示されているものと同様に、線の一部を変更しようとしましたが、それは助けていません。

+1

。あなたは ''データ=リスト(マップ(data._make、c.fetchallを()))試みることができます... – mgilson

答えて

0

投稿者mgilsondata = map(data._make, c.fetchall())data = list(map(data._make, c.fetchall()))に変更する必要があります。複数回にわたって繰り返すことができない - 反復可能オブジェクトを返すmap` python3.x、 `に