【问题标题】:Teradata Python module cursor result set is exhausted after one iterationTeradata Python 模块游标结果集在一次迭代后耗尽
【发布时间】:2016-10-13 03:35:19
【问题描述】:

我正在试验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")

【问题讨论】:

    标签: python cursor iteration teradata resultset


    【解决方案1】:

    生成器只能迭代一次,使用listtuple进行转换,然后可以多次迭代:

    rows = tuple(db.func1())
    
    for row in rows:
        # do something
    
    for row in rows: # would work
        # do something else
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-03
    • 2015-11-24
    • 2015-04-08
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    相关资源
    最近更新 更多