通过python更改来自DB2的查询结果的类型

我无法使用查询输出中的所有行。


如果我运行第一个代码:


#1st code

l1 = [(1, 2, 3, 4, 'John'),(10, 20, 30, 40, 'Doe')]


labels = ['A', 'B', 'C', 'D', 'E']

df = pd.DataFrame.from_records(l1, columns=labels)


print(df)

输出是:


    A   B   C   D     E

0   1   2   3   4  John

1  10  20  30  40   Doe

如果我运行第二个代码:


#2nd code

def c2nd():

    conn = ibm_db.pconnect("db login details;", "", "")

    sql = "SELECT * FROM METADATA.TBD_201811_TMP_AT"

    stmt = ibm_db.exec_immediate(conn, sql)

    tuple = ibm_db.fetch_tuple(stmt)

    while tuple != False:

            l = list(tuple)

            return l

            tuple = ibm_db.fetch_tuple(stmt)


 print(c2nd())

输出只有一行而不是两行:


[10,20,30,40,'Doe']

问题是,如果我尝试将结果写入 .csv 文件,我总是只收到结果的最后一行。我怎样才能列出并使用我的输出的所有(在我的情况下是两行)行?


ps:仅供参考,结果也可以包含 1000 或 100 000 行


摇曳的蔷薇
浏览 123回答 1
1回答

慕婉清6462132

这是因为您return在 while 循环中使用,当代码命中时,它会因为它认为已经完成而跳出您的函数。您可以替换return为yield,它会在生成器中一次传递一个项目。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python