V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
yueyoum
V2EX  ›  Python

一个简单的mongo wrapper

  •  
  •   yueyoum ·
    yueyoum · 2013-11-14 18:06:49 +08:00 · 2668 次点击
    这是一个创建于 3822 天前的主题,其中的信息可能已经有所发展或是发生改变。
    https://github.com/yueyoum/mongo-wrapper

    LZ 刚开始正式使用mongodb, 直接用的pymongo

    发现每次操作数据的时候, 都要写一大堆,什么 $set, $pull, 之类的

    而且还发生过一次 db_name.collection_name.operate 的时候, collection_name 不小心写错了, 导致 debug了一段时间。

    所以就想到还是应该把insert, update, 操作封装一下。

    看了下mongoengine,感觉有点重量级。

    于是自己写了个简单的封装。

    因为目前存储的数据结构比较简单, 所以只实现了目前我需要的操作。

    欢迎大家讨论
    3 条回复    1970-01-01 08:00:00 +08:00
    ritksm
        1
    ritksm  
       2013-11-14 18:26:05 +08:00
    说实话我没看出来这个轮子有啥必要的地方。。。而且整个内部逻辑都被封装起来了,一个失去了自由性,一个对数据很不放心

    1、发现每次操作数据的时候, 都要写一大堆,什么 $set, $pull, 之类的:
    这个和你的业务逻辑是有关系的吧。我最近经常用到的update就只有push,而且你把set这么一封装就失去了多条update的能力吧。
    2、而且还发生过一次 db_name.collection_name.operate 的时候, collection_name 不小心写错了, 导致 debug了一段时间。
    这个难道不应噶写在配置文件里import进来么,或者做个全局的变量


    我感觉用mongodb要么就直接pymongo,接口已经很简洁了而且well-documented。。要么上mongoengine的主要也还是和django啥的集成吧
    yueyoum
        2
    yueyoum  
    OP
       2013-11-14 19:48:00 +08:00
    @ritksm

    是的, 失去了很大的灵活性, 所以我也说这只是应对我目前项目的。

    1, 还是可以 多条update的,只是没法 一起 update list 和 普通的field, 比如 {a: 1, b: [1,2,3]} 我这样封装的set 方法就没法一起操作。

    不过也是你说的 和业务有关。 我现在的存储 还没有这种情况。


    2, 你说的对



    pymongo 确实是 well-documented的, 只是我在使用的时候 遇到了我提到的那些问题而已。

    最后,其实这不是个轮子, 我连 setup.py 都没写, pypi 都没提交。 只是个自己使用的工具,
    而且我也没有使用mongodb 的经验

    总之感谢你的建议, 欢迎这样的讨论 ^_^
    yeweiyang
        3
    yeweiyang  
       2013-11-15 21:23:45 +08:00
    三草芥 同学
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   752 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 21:47 · PVG 05:47 · LAX 14:47 · JFK 17:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.