首页
学习
活动
专区
圈层
工具
发布

pymongo.errors.CursorNotFound: Cursor not found

先从数据库中取得所有数据 db[‘test’].find({},{_id:0}),然后对结果进行for循环 demos = db['demo'].find({},{"_id": 0}) for cursor...in demos:      do_something() 但是当do_something函数耗时过长,在cursor上长时间没有进行操作,引发cursor在mongodb服务端超时 解决方案 1、设置...no_cursor_timeout = True,永不超时,游标连接不会主动关闭,需要手动关闭 demos = db['demo'].find({},{"_id": 0},no_cursor_timeout...= True) for cursor in demos:     do_something() demo.close() # 关闭游标 2、设置batch_size返回文档数,默认应该是20个文档(...记不清了233333),可以设置小一些 #每次只返回一个文档 demos = db['demo'].find({},{"_id": 0}).batch_size(1) for cursor in demos

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Pymongo的一个小坑

    // Pymongo的一个小坑 // 这两天遇到一个线上的问题,是关于Pymongo处理时间方面的,这里记录一下,希望对大家有帮助。...看到这里,继续追问业务方写入MongoDB的方法是什么,得知是pymongo之后,我查询了pymongo的官方文档,看到了下面的内容: ?...简单说,就是从pymongo驱动将当前时间写入到mongodb数据库的时候,时间字段需要使用python的utcnow()函数来写入,而不能使用now()函数。...encoding=utf-8 import pymongo import time from datetime import datetime, timedelta conn = pymongo.MongoClient...说明只有使用utcnow()的时候,pymongo才能写入正确的时间字段,否则,时间字段的转换就会出错,写入时间将是单签时间未来8小时的时间。

    82030

    4种方法解决MongoDB游标超时的问题

    摄影:产品经理 厨师:kingname 当我们使用Python从MongoDB里面读取数据时,可能会这样写代码: import pymongo handler = pymongo.MongoClient...所以pymongo会一次性获取100行, forrowinhandler.find()循环第一次的时候,它会连上MongoDB,读取一百条数据,缓存到内存中。...10分钟之内,必需再次连接MongoDB读取内容刷新游标时间,否则,就会导致游标超时报错: pymongo.errors.CursorNotFound: cursor id 211526444773 not...通过设定参数 no_cursor_timeout=True,让游标永不超时: cursor = handler.find(no_cursor_timeout=True) for row in cursor...我们来看看pymongo的游标对象里面, __exit__是怎么写的,如下图所示: ? 可以看到,这里正是关闭游标的操作。

    4.1K30
    领券
    首页
    学习
    活动
    专区
    圈层
    工具
    MCP广场