同步/异步MongoDB ODM,是的。

umongo的Python项目详细描述


μmongo:同步/异步odm

https://img.shields.io/pypi/v/umongo.svghttps://img.shields.io/travis/scille/umongo/master.svgdocumentation statuscode coverage

μmongo是一个python mongodb odm。IT起始来自两个需求: 缺乏异步odm和文档(非)序列化的困难 使用现有的ODM。

从这一点出发,μmongo做出了一些设计选择:

  • 尽可能接近标准MongoDB驱动程序以保持相同的API: 使用 查找({"field": "value"}) 像往常一样,但检索数据时要小心包装!
  • 使用多个驱动程序( pymongo txmongo motor异步 mongomok 暂时)
  • 与棉花糖系列化库紧密集成 向外部世界转储和加载数据
  • i18n集成以本地化验证错误消息
  • 自由软件:麻省理工学院许可证
  • 90%以上覆盖率测试;-)

快速示例

fromdatetimeimportdatetimefrompymongoimportMongoClientfromumongoimportInstance,Document,fields,validatedb=MongoClient().testinstance=Instance(db)@instance.registerclassUser(Document):email=fields.EmailField(required=True,unique=True)birthday=fields.DateTimeField(validate=validate.Range(min=datetime(1900,1,1)))friends=fields.ListField(fields.ReferenceField("User"))classMeta:collection=db.user# Make sure that unique indexes are createdUser.ensure_indexes()goku=User(email='goku@sayen.com',birthday=datetime(1984,11,20))goku.commit()vegeta=User(email='vegeta@over9000.com',friends=[goku])vegeta.commit()vegeta.friends# <object umongo.data_objects.List([<object umongo.dal.pymongo.PyMongoReference(document=User, pk=ObjectId('5717568613adf27be6363f78'))>])>vegeta.dump()# {id': '570ddb311d41c89cabceeddc', 'email': 'vegeta@over9000.com', friends': ['570ddb2a1d41c89cabceeddb']}User.find_one({"email":'goku@sayen.com'})# <object Document __main__.User({'id': ObjectId('570ddb2a1d41c89cabceeddb'), 'friends': <object umongo.data_objects.List([])>,#                                 'email': 'goku@sayen.com', 'birthday': datetime.datetime(1984, 11, 20, 0, 0)})>

立即获取:

$ pip install umongo           # This installs umongo with pymongo
$ pip install my-mongo-driver  # Other MongoDB drivers must be installed manually

或者与您计划使用的MongoDB驱动程序一起使用:

$ pip install umongo[motor]
$ pip install umongo[txmongo]
$ pip install umongo[mongomock]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我能在这个程序中更好地使用内存吗?   为什么我的Java while循环迭代了一半   java IntelliJ IDEA不在构建时复制资源   socket仅在Java TCP服务器输出上检查客户端断开连接   java游戏物理摩擦   java片段onClick调用方法   symja数学分析器中无法识别java Abs[x]   java在使用泛型时创建二进制搜索树类的实例?   java在外键约束表上的添加和删除   语法java表达式的含义,如果有条件   java创建内联对象并作为参数传递   是否有相当于Redis排序集(zset)的Java数据结构   java找不到适合的方法(无参数)   音频文件操作给定字节帧的音量Java   Eclipse4不以JavaWebStart启动   java如何使用org在JSON对象中获取嵌套的键元素。json?   java与Jackson的反序列化:“org.codehaus.Jackson.map.JsonMappingException:无法反序列化[projectname]的实例。”   字符串的Java正则表达式   spring集成上的java检测缺火指令