使用pymongo的生成器函数

0 投票
1 回答
2696 浏览
提问于 2025-04-16 21:54

我正在尝试创建一个生成器函数,每次调用时都能返回一个不同的项目,但我总是得到同一个项目。以下是我的代码:

  1 from pymongo import Connection
  2 
  3 connection = Connection()
  4 db = connection.store
  5 collection = db.products
  6 
  7 def test():
  8         global collection #using a global variable just for the test.
  9         items = collection.find()
  10        for item in items:
  11                 yield item['description']
  12        return

1 个回答

2

首先,去掉 return,这个是多余的。

你的问题不在于 test() 本身,而是你是怎么调用它的。不要直接调用 test()

你可以这样做:

for item in test():
    print item

这样你就能一次得到一个结果。这个操作的基本原理是:

from exceptions import StopIteration
it = iter(test())

while True:
    try:
        item = it.next()
    except StopIteration:
        break
    print item

撰写回答