Skip to content
forked from TurboGears/Ming

MongoDB ODM ( Object Document Mapper ) with Unit of Works, IdentityMap, Relations and MongoInMemory implementation

License

Notifications You must be signed in to change notification settings

CastixGitHub/Ming

 
 

Repository files navigation

Ming

image

image

image

image

image

image

image

Ming is a MongoDB ODM ( Object Document Mapper, like an ORM but for Document based databases), that builds on top of pymongo by extending it with:

  • Declarative Models
  • Schema Validation and Conversion
  • Lazy Schema Evolution
  • Unit of Work
  • Identity Map
  • One-To-Many, Many-To-One and Many-To-Many Relations
  • Pure InMemory MongoDB Implementation

Ming is the official MongoDB support layer of TurboGears web framework, thus feel free to join the TurboGears Gitter or Twitter to discuss Ming.

If you want to dig further in Ming, documentation is available at http://ming.readthedocs.io/en/latest/

Getting Started

To use Ming you need to create a Session and a few models that should be managed by it:

from ming import create_datastore, schema
from ming.odm import ThreadLocalODMSession, Mapper, MappedClass, FieldProperty

session = ThreadLocalODMSession(
    bind=create_datastore('mongodb://localhost:27017/dbname')
)

class WikiPage(MappedClass):
    class __mongometa__:
        session = session
        name = 'wiki_page'

    _id = FieldProperty(schema.ObjectId)
    title = FieldProperty(schema.String(required=True))
    text = FieldProperty(schema.String(if_missing=''))

Mapper.compile_all()

Then you can create and query those models:

>>> WikiPage(title='FirstPage', text='This is a page')
<WikiPage text='This is a page'
   _id=ObjectId('5ae4ef717ddf1ff6704afff5')
   title='FirstPage'>

>>> session.flush()  # Flush session to actually create wikipage.

>>> wp = WikiPage.query.find({'text': 'This is a page'}).first()
>>> print(wp)
<WikiPage text='This is a page'
  _id=ObjectId('5ae4ef717ddf1ff6704afff5')
  title='FirstPage'>

About

MongoDB ODM ( Object Document Mapper ) with Unit of Works, IdentityMap, Relations and MongoInMemory implementation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%