Asynchronous MongoDB ORM for Tornado
Project description
- 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.
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:
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.
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
monguo-0.2.2.tar.gz
(14.4 kB
view details)
File details
Details for the file monguo-0.2.2.tar.gz
.
File metadata
- Download URL: monguo-0.2.2.tar.gz
- Upload date:
- Size: 14.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7225a809aea49da46319df0837fd75e3232d92f60e51f1fef21ae046df1bfbe |
|
MD5 | 7d6dfb2a402bdbb4c27a828ac9448522 |
|
BLAKE2b-256 | 4c7111b550b43d5a585d0a63644c151cd12f740cf4e3047603ecf380a2a336ee |