同步/异步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 GUI对象消失   java无法更新oracle中的clob字段   php Linux+动态插入的Java小程序=在NPObject上调用方法时出错   java JVisualVM探查器代理jar已加载,但代理初始化失败   java Android在运算符和TextView值方面存在问题   用于OpenPGP智能卡小程序的rsa解密APDU   Java GUI按钮不会添加到面板中   java找不到移动图像(或其他可单击对象)的方法   java中Do/While循环的问题   多线程使java程序在没有线程的情况下休眠   java如何在Webflux功能端点的测试中禁用Spring安全性   如果存在后退历史记录,则java WebView仅显示后退按钮   通过USB将Arduino中显示的java错误数据传输到Android   java如何使用安卓 studio从4层父节点firebase获取子节点数据   jpanel中JLabel的java搜索栏   来自gallery/camera的java Android图像预览不同