简单的代码:
models = db.live.chans.find()
for m in models:
print m,"line1"
for m in models:
print m,'line2'上面的代码不能打印‘line2 2’,我必须这样做:
models = db.live.chans.find()
for m in models:
print m,"line1"
for m in models:
print m,'line2'我哪里做错了?或者光标不能再次循环?
发布于 2014-02-04 15:37:34
看起来models是从DB查询返回的结果集。如果你想重用它,你必须先保存它(使用for循环):
saved_data = []
for m in models:
saved_data.append(m)现在,您可以根据需要多次迭代saved_data:
for m in saved_data:
print m,"line1"
for m in saved_data:
print m,"line2"发布于 2014-02-04 16:04:30
光标的工作方式类似于文件指针。如果迭代一次,它将指向查询结果的末尾。您必须执行倒带()来重置它。
models = db.live.chans.find()
for m in models:
print m,"line1"
models.rewind()
for m in models:
print m,'line2您可以使用属性alive来检查此游标是否有可能返回更多数据。
models = db.live.chans.find()
print models.alive # True
for m in models:
print m,"line1"
print models.alive # False
models.rewind()
print models.alive # True如果多次使用相同的结果数据,您可以将返回的数据保存在自己的本地内存中。
https://stackoverflow.com/questions/21546425
复制相似问题