Teradata Python 模块游标结果集在一次迭代后耗尽
Teradata Python module cursor result set is exhausted after one iteration
我正在试验 Teradata python 模块教程 here
我正在执行一个查询,我想多次迭代结果集。问题是,如果我遍历结果集一次,我就不能再做一次。看起来结果集已用完,无法再用于任何进一步的计算。
请参阅下面的代码了解详细信息并建议我如何保留结果集。
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")
生成器只能迭代一次,用list
或tuple
转换,然后可以迭代多次:
rows = tuple(db.func1())
for row in rows:
# do something
for row in rows: # would work
# do something else
我正在试验 Teradata python 模块教程 here
我正在执行一个查询,我想多次迭代结果集。问题是,如果我遍历结果集一次,我就不能再做一次。看起来结果集已用完,无法再用于任何进一步的计算。
请参阅下面的代码了解详细信息并建议我如何保留结果集。
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")
生成器只能迭代一次,用list
或tuple
转换,然后可以迭代多次:
rows = tuple(db.func1())
for row in rows:
# do something
for row in rows: # would work
# do something else