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)
这是我的代码:
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)