类似于orm的pymongo扩展,它添加了json模式验证、索引管理和中间数据操纵器

pymongoext的Python项目详细描述


PymongoExt

pymongoext是一个类似于orm的pymongo扩展,它添加了json模式验证, 索引管理和中间数据操纵器。 pymongoext简化了mongodb的使用,同时保持了与pymongo完全相同的语法。

pymongoext.Model只是pymongo.Collection的包装。 因此,所有pymongo.collection API都通过pymongoext.model公开。 如果在pymongoext.model API中找不到所需的内容, 请看一下Pymongo的收藏文件。

文档可在https://pymongoext.readthedocs.io

代码托管在github https://github.com/musyoka-morris/pymongoext

功能

  • 模式验证(使用MongoDB JSON模式验证)
  • 无模式功能
  • 嵌套的复杂模式声明
  • 非类型字段支持
  • 必需字段验证
  • 默认值
  • 自定义验证器
  • 用于验证的运算符(one of、allof、anyof、not)
  • 索引管理
  • 数据操纵器(保存前和检索后转换文档)
  • 易于创建自定义数据操纵器
  • 类似对象的结果而不是类似于dict的结果。(即foo.bar而不是foo['bar'])
  • 没有要学习的自定义查询语言或api(如果您知道如何使用pymongo,您已经知道如何使用pymongoext)

支持的MongoDB&Python版本

pymongoext使用json模式进行验证,因此我们只支持 MongoDB v3.6+。

pymongoext支持python v3+。目前正在考虑对python v2.7的支持。

安装

我们建议使用virtualenvpip。然后可以使用pip install -U pymongoext

你可能还有setuptools 因此您可以使用easy_install -U pymongoext。另一个选择是 pipenv。然后可以使用pipenv install pymongoext 创建虚拟环境并安装软件包。

或者,您可以从GitHub和 运行python setup.py install

示例

pymongoext代码的一些简单示例:

fromdatetimeimportdatetimefrompymongoimportMongoClient,IndexModelfrompymongoextimport*classUser(Model):@classmethoddefdb(cls):returnMongoClient()['my_database_name']__schema__=DictField(dict(email=StringField(required=True),name=StringField(required=True),yob=IntField(minimum=1900,maximum=2019)))__indexes__=[IndexModel('email',unique=True),'name']classAgeManipulator(Manipulator):deftransform_outgoing(self,doc,model):doc['age']=datetime.now().year-doc['yob']returndoc# Create a user>>>User.insert_one({'email':'jane@gmail.com','name':'Jane Doe','yob':1990})# Fetch one user>>>user=User.find_one()# Print the users age>>>print(user.age)

贡献

欢迎投稿! 请参见Contribution guidelines

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

推荐PyPI第三方库


热门话题
datetime如何使用JodaTime在Java中设置时间属性   java固定算法的性能时间   java如何从JMenu中获取所选项以更改文本区域的文本颜色?   java配置单元UDF传递数组<string>作为参数   javaapachebeam和BigQuery   java与PrintWriter之间的差异。printf和PrintWriter。格式方法   继承如何处理按Java版本更改的导入,以及在多个版本上编译   xml java。lang.noClassDefFoundant生成错误   java如何使用包含映射的JSON发送POST请求?   java如何在任何应用程序的JAR文件中绑定MySql数据库?   Java脚本解释器   sslhttpclientjava。网SocketException:未实现未连接的socket   java如何为Android应用程序创建类似于Cron作业的东西   java JButton+radiobox+复选框   java内存管理将文件写入内存   java这是计算对象实例的有效方法吗?   用于死锁情况的java代码?   JavaSpring容器作为新实体插入,而不是存储在表中