V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
likuku
V2EX  ›  MongoDB

pymongo,save 保存一个新记录,下一行立即find_one,找不到,求解。

  •  
  •   likuku · 2013-08-14 18:27:39 +08:00 · 7035 次点击
    这是一个创建于 4148 天前的主题,其中的信息可能已经有所发展或是发生改变。
    pymongo,访问localhost机器(debian 6.0)的mongodb,

    save 保存一个新记录,立即find_one,找不到。

    save 保存一个新记录,对pymongo.connection.Connection()实例执行disconnect(),立即find_one,至少30%机率找不到。

    自己试出的解法:
    save 保存一个新记录,time.sleep(1)#等待1秒,立即find_one,100%找到。

    但这样子在操纵很多数据时,很多个1秒钟的等待也不是个短时间了。

    有人碰到类似状况么?您有更好解法么?
    3 条回复    1970-01-01 08:00:00 +08:00
    solos
        1
    solos  
       2013-08-14 18:42:22 +08:00   ❤️ 1
    mongodb默认是延时插入的,可以在插入的时候用fsync=True选项强制刷到磁盘
    shiny
        2
    shiny  
       2013-08-14 18:43:49 +08:00   ❤️ 1
    你 w=1 了吗
    likuku
        3
    likuku  
    OP
       2013-08-22 18:40:57 +08:00
    @solos @shiny 感谢两位!这办法好用。

    稍微有点曲折,在测试这两位提供的解法时,发现这些属性找不到。发觉原来机器上 pymongo 是直接拿 apt-get 安装的,版本只有 1.7。

    在线官方文档已经是 pymongo 2.5了。遂 apt-get 卸载旧版 pymongo,安装 python-setuptools,然后用 easy_install pymongo 装上最新版 pymongo,一切都顺畅了。

    pymongo 1.7 和 2.6 还有 ObjectId 不一样:

    #from pymongo.objectid import ObjectId # is pymongo 1.7

    # bson is pymongo 2.5.2
    from bson.objectid import ObjectId
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2571 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 15:30 · PVG 23:30 · LAX 07:30 · JFK 10:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.