V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
likuku
V2EX  ›  MongoDB

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

  •  
  •   likuku · Aug 14, 2013 · 7458 views
    This topic created in 4639 days ago, the information mentioned may be changed or developed.
    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 replies    1970-01-01 08:00:00 +08:00
    solos
        1
    solos  
       Aug 14, 2013   ❤️ 1
    mongodb默认是延时插入的,可以在插入的时候用fsync=True选项强制刷到磁盘
    shiny
        2
    shiny  
    PRO
       Aug 14, 2013   ❤️ 1
    你 w=1 了吗
    likuku
        3
    likuku  
    OP
       Aug 22, 2013
    @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
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5635 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 07:58 · PVG 15:58 · LAX 00:58 · JFK 03:58
    ♥ Do have faith in what you're doing.