Skip to main content

Tornado 的异步 MongoDB ORM

项目描述

https://github.com/shiyanhui/monguo/blob/master/doc/source/_static/monguo.jpg?raw=true
信息

Monguo 是一个功能齐全的异步MongoDB ORM,带有用于Tornado应用程序的电机驱动程序。

作者

石灰 YH.Shi

https://pypip.in/v/monguo/badge.png https://pypip.in/d/monguo/badge.png

关于

Monguo 是一个基于驱动程序Motor的异步 MongoDB ORM 。源代码在 GitHub 上,文档在ReadTheDocs上。

安装

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

依赖项

Monguo 在TornadoMotor官方支持的所有环境中工作。这个需要:

  • Unix,包括 Mac OS X。Microsoft Windows 不受官方支持。

  • 龙卷风3.0+

  • 电机0.2+

例子

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阅读当前文档。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

monguo-0.2.2.tar.gz (14.4 kB 查看哈希)

已上传 source