首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xxs中xx的python :不能在pymongo中再次进入?

xxs中xx的python :不能在pymongo中再次进入?
EN

Stack Overflow用户
提问于 2014-02-04 15:28:18
回答 2查看 112关注 0票数 0

简单的代码:

代码语言:javascript
复制
models = db.live.chans.find()
for m in models:
    print m,"line1"
for m in models:
    print m,'line2'

上面的代码不能打印‘line2 2’,我必须这样做:

代码语言:javascript
复制
models = db.live.chans.find()
for m in models:
    print m,"line1"
for m in models:
    print m,'line2'

我哪里做错了?或者光标不能再次循环?

EN

回答 2

Stack Overflow用户

发布于 2014-02-04 15:37:34

看起来models是从DB查询返回的结果集。如果你想重用它,你必须先保存它(使用for循环):

代码语言:javascript
复制
saved_data = []
for m in models:
    saved_data.append(m)

现在,您可以根据需要多次迭代saved_data

代码语言:javascript
复制
for m in saved_data:
    print m,"line1"

for m in saved_data:
    print m,"line2"
票数 1
EN

Stack Overflow用户

发布于 2014-02-04 16:04:30

光标的工作方式类似于文件指针。如果迭代一次,它将指向查询结果的末尾。您必须执行倒带()来重置它。

代码语言:javascript
复制
models = db.live.chans.find()
for m in models:
    print m,"line1"

models.rewind()
for m in models:
    print m,'line2

您可以使用属性alive来检查此游标是否有可能返回更多数据。

代码语言:javascript
复制
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

如果多次使用相同的结果数据,您可以将返回的数据保存在自己的本地内存中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21546425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档