2016-06-12 6 views
1

後、私はのTeradataのpythonモジュールのチュートリアルhereTeradataのPythonのモジュールカーソル結果セットは、一回の反復

私はクエリを実行していますを試しています排出されると、私は何回か、結果セットを反復処理します。問題は、私が結果セットを一度反復すると、私はそれをもう一度行うことができないということです。結果セットが使い尽くされ、それ以上の計算に使用できなくなったように見えます。

詳細については、次のコードを参照し、結果セットを保持する方法を提案してください。

import teradata 

class DB(): 
    def __init__(self): 
     udaExec = teradata.UdaExec (appName="HelloWorld", version="1.0",logConsole=False) 
     session = udaExec.connect(method="odbc", system="tddemo",username="dbc", password="dbc") 
     self.session = session 

    def fun1(self): 
     rows = self.session.execute("SELECT databasename, ownername FROM DBC.DATABASES where DatabaseName='financial'") 
     return rows 

db = DB() 
rows = db.fun1() 

# This loop prints accurate result like 
#Row 1: [financial, Samples] 
for row in rows: 
    print(row) 

# This loop does not print anything 
for row in rows: 
    print(row) 

# This line also gets printed 
print("The End") 

答えて

1

ジェネレーターだけでそれらを変換するためにlistまたはtupleを使用し、一回以上反復することができ、その後、あなたはそれの上に複数回繰り返すことができます:

rows = tuple(db.func1()) 

for row in rows: 
    # do something 

for row in rows: # would work 
    # do something else 
+0

あなたは簡単に発電機が何であるかを説明できますか?私はPythonには初めてです – Ali

+0

@Aliこれは良い紹介です:http://stackoverflow.com/questions/1756096/understanding-generators-in-python – noteness

関連する問題