Skip to main content

Minimal Python ODM for MongoDB

Project description

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).

https://travis-ci.org/eguven/nanomongo.png

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

note: nanomongo is in alpha stage and in development, documentation is in progress as well:

# 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 written for Python3 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

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.1.tar.gz (16.4 kB view details)

Uploaded Source

File details

Details for the file nanomongo-0.1.tar.gz.

File metadata

  • Download URL: nanomongo-0.1.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for nanomongo-0.1.tar.gz
Algorithm Hash digest
SHA256 daf13c9870a44cfba60409cbde1e8955007d762d52791745225eb7e4342a1311
MD5 4cdd5fd1bffaeda869acbf8142762290
BLAKE2b-256 6e04012b47f9e2280dd3747fce38c95467139b5aaf2168ef067ba20fa6745495

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page