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

时间:2018-10-10 05:42:11

标签: 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或100000行

1 个答案:

答案 0 :(得分:1)

这是因为您在while循环中使用了return,当代码命中时,它认为它已经完成了,因此超出了您的功能。

您可以将return替换为yield,它将在生成器中一次分发一项。