An ORM-like Pymongo extension that adds json schema validation, index management and intermediate data manipulators
Project description
=========== Pymongoext
Pymongoext is an ORM-like Pymongo extension that adds json schema validation, index management and intermediate data manipulators. Pymongoext simplifies working with MongoDB, while maintaining a syntax very identical to Pymongo.
Documentation is available at https://pymongoext.readthedocs.io. The code is hosted on Github https://github.com/musyoka-morris/pymongoext
Supported MongoDB & Python Versions
Pymongoext uses JSON Schema for validation and thus we only support MongoDB v3.6+.
Pymongoext supports python v3+. Support for python v2.7 is currently under consideration.
Installation
We recommend the use of virtualenv <https://virtualenv.pypa.io/>
_ and of
pip <https://pip.pypa.io/>
. You can then use pip install -U pymongoext
.
You may also have setuptools <http://peak.telecommunity.com/DevCenter/setuptools>
and thus you can use easy_install -U pymongoext
. Another option is
pipenv <https://docs.pipenv.org/>
_. You can then use pipenv install pymongoext
to both create the virtual environment and install the package.
Alternatively, you can download the source from GitHub <https://github.com/musyoka-morris/pymongoext>
_ and
run python setup.py install
.
Examples
Some simple examples of what pymongoext code looks like:
.. highlight:: python .. code-block:: python
from datetime import datetime
from pymongo import MongoClient, IndexModel
from pymongoext import *
class User(Model):
@classmethod
def db(cls):
return MongoClient()['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']
class AgeManipulator(Manipulator):
def transform_outgoing(self, doc):
doc['age'] = datetime.now().year - doc['yob']
return doc
# 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'])
Contributing
We welcome contributions!
See the Contribution guidelines <https://github.com/musyoka-morris/pymongoext/blob/master/CONTRIBUTING.rst>
_
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pymongoext-2.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 88033694d6f3cd62cf8b2197f5ba10c194fc3792442349ecb42b0b59d1ce1818 |
|
MD5 | e9d30eec225e9112835a4f83feb79ae8 |
|
BLAKE2b-256 | 56f7c43834bd5e3867c112f51f709f5d5b87ed69ad3fccdd02ae48220ab2c439 |