skip to navigation
skip to content

Not Logged In

monguo 0.1.12

Asynchronous MongoDB ORM for Tornado

Latest Version: 0.2.2

Info:Monguo is a full-featured, asynchronous MongoDB ORM with Motor dirver for Tornado applications.
Author:Lime YH.Shi

About

Monguo is an asynchronous MongoDB ORM based on driver Motor. The source is on GitHub and the docs are on ReadTheDocs.

Issues / Questions / Feedback

You can open an issue on GitHub or email me directly at shiyanhui66@gmail.com if you have any question or feedback.

Installation

$ pip install git+https://github.com/mongodb/motor.git
$ pip install monguo

Dependencies

Monguo works in all the environments officially supported by Tornado and Motor. It requires:

  • Unix, including Mac OS X. Microsoft Windows is not officially supported.
  • Tornado 3.0+ (temporarily)
  • Motor 0.1+ (temporarily)

Additional dependencies are:

  • (to generate documentation) sphinx

Examples

class UserDocument(Document):
    name  = StringField(required=True, unique=True, max_length=20)
    email = EmailField(required=True)
    age   = IntegerField()
    sex   = StringField(required=True, default='male',
                                       candidate=['male', 'female'])
    meta = {
        'collection': 'user'
    }

    def get_user_list(skip=10, limit=5):
        result = yield UserDocument.find().to_list(limit)
        raise gen.Return(result)


class CommentDocument(EmbeddedDocument):
    commentor = ReferenceField(UserDocument, required=True)
    contents  = StringField(required=True, max_length=200)


class PostDocument(Document):
    author       = ReferenceField(UserDocument, required=True)
    publish_time = DateTimeField(required=True)
    title        = StringField(required=True, max_length=100)
    contents     = StringField(max_length=5000)
    comments     = ListField(EmbeddedDocumentField(CommentDocument))

    meta = {
        'collection': 'post'
    }

# connect to database
Connection.connect('test')

# insert
bob_id = yield UserDocument.insert({
    'name': 'Bob',
    'email': 'bob@gmail.com',
    'age': 19
})

alice_id = yield UserDocument.insert({
    'name': 'Alice',
    'email': 'alice@gmail.com',
    'sex': 'female',
    'age': 18
})

post_id = yield PostDocument.insert({
    'author': DBRef(UserDocument.meta['collection'], bob_id),
    'publish_time': datetime.now(),
    'title': 'title',
})

# update
comment = {
    'commentor': DBRef(UserDocument.meta['collection'], alice_id),
    'contents': 'I am comments.'
}
yield PostDocument.update({'_id': post_id},
                          {'$push': {'comments': comment}})

# query
user = yield UserDocument.find_one({'name': 'Bob'})
posts = yield PostDocument.find().to_list(5)

# higher API
user_list = yield UserDocument.get_user_list()

Documentation

You will need sphinx installed to generate the documentation. Documentation can be generated by running python setup.py doc. Generated documentation can be found in doc/build/html/. You can read the current docs at ReadTheDocs.

 
File Type Py Version Uploaded on Size
monguo-0.1.12.tar.gz (md5) Source 2014-03-26 14KB
  • Downloads (All Versions):
  • 44 downloads in the last day
  • 258 downloads in the last week
  • 750 downloads in the last month