类似于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的支持。
安装
我们建议使用virtualenv和 pip。然后可以使用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