Web.pysql查询,为什么只能遍历第一遍的结果?

Web.py sql query, why we can only traverse the result at the first time?

这是我的代码:

import web
user_db = web.database(dbn='mysql', ....)

info_list = user_db.query("select * from tablename where t_id= ")
for info in info_list:
# work ok at first time, print the correct id
    print info.id

for info in info_list: 
# Code can't reach here 
    print info.id

第二次好像都不行。为什么?

根据 source code,底层 query() 调用 returns 一个 迭代器 ,它在第一个循环后会耗尽。

如果需要多次迭代,将其转换为列表:

info_list = list(user_db.query("select * from tablename where t_id= "))

或者,您可以使用 itertools.tee() 创建新的迭代器:

info_list1, info_list2 = itertools.tee(info_list)