我无法使用查询输出中的所有行。
如果我运行第一个代码:
#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行
答案 0 :(得分:1)
这是因为您在while循环中使用了return
,当代码命中时,它认为它已经完成了,因此超出了您的功能。
您可以将return
替换为yield
,它将在生成器中一次分发一项。