我开始使用 pymongo 的(版本 2.2.1)ReplicaSetConnection 对象而不是 pymongo.Connection 对象。现在,当我从数据库执行读取时,例如:
if cur.count() == 0:
raise NoDocumentsFound(self.name, self.COLLECTION_NAME)
elif cur.count() > 1:
raise TooManyDocumentsFound(self.name, self.COLLECTION_NAME)
cur.rewind()
rec = cur[0]
我有时会收到“IndexError:Cursor 实例没有这样的项目“在最后一行。从我所能找到的有关此错误的信息来看,只有当您没有任何与您的查询匹配的记录时,它才应该发生。但是,我已经清楚地检查了我的光标中是否有项目。是ReplicaSetConnection 是否发生了一些奇怪的事情,导致这些读取操作更加不稳定?
哦,我是个白痴。事实证明,我有另一个线程同时运行一些测试代码。因此,有一个并发进程在我检查游标然后从中提取数据的时间内修改了数据库。
这是一个有趣的例子,说明游标是如何惰性的,并且游标对象本身不仅仅是一个简单的数组。
干杯,
——彼得
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)