Minimal Python ODM for MongoDB
Project description
=========
nanomongo
=========
If you like using ``pymongo`` native api but often find yourself subclassing
``dict`` to add some extra logic and while you're at it, why not add some
field validations right? And index definitions, and ``pymongo.Collection``
wrappers, and ... (you get the idea).
.. image:: https://travis-ci.org/eguven/nanomongo.png
:target: https://travis-ci.org/eguven/nanomongo
Features
--------
- single format ``Field`` definitions with type checking and a few common
options such as ``required``, ``default``, ``auto_update``
- ``pymongo``-identical index definitions
- optional ``dot_notation``
- assignment and deletion (delta) tracking for ``'$set'`` and ``'$unset'``
and atomic updates; you either insert or update
- ``'$addToSet'`` on ``Document``
- *upcoming* ``'$push'`` ``'$pull'`` funtionality
# rough example
import pymongo
from nanomongo import Field, BaseDocument, Index
client = pymongo.MongoClient()
class MyDoc(BaseDocument, dot_notation=True, client=client, db='dbname'):
foo = Field(str)
bar = Field(int, required=False)
__indexes__ = [
Index('foo'),
Index([('bar', 1), ('foo', -1)], unique=True),
]
doc = MyDoc(foo='L33t')
doc.bar = 42
doc.insert()
Doc.find_one({'foo': 'L33t'})
nanomongo is Python23 compatible and I intend to support both pymongo & motor
transparently under the hood.
Contributions and insight are welcome!
:Author: Eren Güven (GitHub_, Twitter_)
:License: Apache Software License
.. _GitHub: https://github.com/eguven
.. _Twitter: https://twitter.com/cyberfart
nanomongo
=========
If you like using ``pymongo`` native api but often find yourself subclassing
``dict`` to add some extra logic and while you're at it, why not add some
field validations right? And index definitions, and ``pymongo.Collection``
wrappers, and ... (you get the idea).
.. image:: https://travis-ci.org/eguven/nanomongo.png
:target: https://travis-ci.org/eguven/nanomongo
Features
--------
- single format ``Field`` definitions with type checking and a few common
options such as ``required``, ``default``, ``auto_update``
- ``pymongo``-identical index definitions
- optional ``dot_notation``
- assignment and deletion (delta) tracking for ``'$set'`` and ``'$unset'``
and atomic updates; you either insert or update
- ``'$addToSet'`` on ``Document``
- *upcoming* ``'$push'`` ``'$pull'`` funtionality
# rough example
import pymongo
from nanomongo import Field, BaseDocument, Index
client = pymongo.MongoClient()
class MyDoc(BaseDocument, dot_notation=True, client=client, db='dbname'):
foo = Field(str)
bar = Field(int, required=False)
__indexes__ = [
Index('foo'),
Index([('bar', 1), ('foo', -1)], unique=True),
]
doc = MyDoc(foo='L33t')
doc.bar = 42
doc.insert()
Doc.find_one({'foo': 'L33t'})
nanomongo is Python23 compatible and I intend to support both pymongo & motor
transparently under the hood.
Contributions and insight are welcome!
:Author: Eren Güven (GitHub_, Twitter_)
:License: Apache Software License
.. _GitHub: https://github.com/eguven
.. _Twitter: https://twitter.com/cyberfart
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
nanomongo-0.3.2.tar.gz
(18.1 kB
view details)
Built Distribution
File details
Details for the file nanomongo-0.3.2.tar.gz
.
File metadata
- Download URL: nanomongo-0.3.2.tar.gz
- Upload date:
- Size: 18.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26f954acaac158f2708a180a18ec87def1a7a6bca1e64c89f5d4e6dd98f59fa3 |
|
MD5 | c60907b4c235af9068e48152b2cfd24c |
|
BLAKE2b-256 | bbd6135f0a042b4cd3546e918cd1821af3742ecb351d611f9600a2ad7113ac82 |
File details
Details for the file nanomongo-0.3.2-py2.py3-none-any.whl
.
File metadata
- Download URL: nanomongo-0.3.2-py2.py3-none-any.whl
- Upload date:
- Size: 14.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e36d93bb89554e9947948b9bb53d4bb8fdbdf01cb3386287c3eb5d248ca53ce1 |
|
MD5 | 5c34e1519f1d0edcf911b323d108b4aa |
|
BLAKE2b-256 | 99b930004ab07897264de636fa1ec0f8ae623b4888573292a9a5b93cac0559e5 |