Tornado 的异步 MongoDB ORM
项目描述
- 信息:
Monguo 是一个功能齐全的异步MongoDB ORM,带有用于Tornado应用程序的电机驱动程序。
- 作者:
石灰 YH.Shi
关于
Monguo 是一个基于驱动程序Motor的异步 MongoDB ORM 。源代码在 GitHub 上,文档在ReadTheDocs上。
安装
$ pip install git+https://github.com/mongodb/motor.git
$ pip install monguo
依赖项
例子
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()
文档
您将需要安装sphinx来生成文档。可以通过运行python setup.py doc生成文档。生成的文档可以在doc/build/html/中找到。您可以在ReadTheDocs阅读当前文档。