Github: https://github.com/MongoEngine/mongoengine
MongoEngine
情報: | MongoEngineはPyMongoの上にあるORMのような層です。 |
---|---|
リポジトリ: | https://github.com/MongoEngine/mongoengine |
著者: | Harry Marr( http://github.com/hmarr ) |
メンテナー: | StefanWójcik( http://github.com/wojcikstefan ) |
約
MongoEngineは、MongoDBを操作するためのPythonのObject-Document Mapperです。 ドキュメントはhttps://mongoengine-odm.readthedocs.ioで入手できます。 チュートリアル 、 ユーザーガイド 、およびAPIリファレンスがあります。
サポートされているMongoDBのバージョン
MongoEngineは現在、MongoDB v2.4、v2.6、およびv3.0に対してテストされています。 将来のバージョンも同様にサポートされるべきですが、現在は積極的にテストされていません。 MongoDB v3.2 +で問題が発生した場合は、問題を開いたりプルリクエストを送信してください。
インストール
virtualenvとpipの使用をお勧めします。 その後、 pip install -U mongoengine
使用することができます。 あなたはsetuptoolsを持っているかもしれないので、 easy_install -U mongoengine
使うことができます。 それ以外の場合は、 GitHubからソースをダウンロードし、 python setup.py install
ます。
依存関係
すべての依存関係はpip経由で簡単にインストールできます。 少なくとも、MongoEngineを使用するには、次の2つのパッケージが必要です。
- pymongo> = 2.7.1
- 6≧1.10.0
DateTimeField
を使用する場合は、より柔軟な日付パーサーを使用することもできます。
- dateutil> = 2.1.0
ImageField
またはImageGridFsProxy
を使用する必要がある場合:
- ピロー> = 2.0.0
例
MongoEngineコードの簡単な例:
from mongoengine import *
connect('mydb')
class BlogPost(Document):
title = StringField(required=True, max_length=200)
posted = DateTimeField(default=datetime.datetime.utcnow)
tags = ListField(StringField(max_length=50))
meta = {'allow_inheritance': True}
class TextPost(BlogPost):
content = StringField(required=True)
class LinkPost(BlogPost):
url = StringField(required=True)
# Create a text-based post
>>> post1 = TextPost(title='Using MongoEngine', content='See the tutorial')
>>> post1.tags = ['mongodb', 'mongoengine']
>>> post1.save()
# Create a link-based post
>>> post2 = LinkPost(title='MongoEngine Docs', url='hmarr.com/mongoengine')
>>> post2.tags = ['mongoengine', 'documentation']
>>> post2.save()
# Iterate over all posts using the BlogPost superclass
>>> for post in BlogPost.objects:
... print '===', post.title, '==='
... if isinstance(post, TextPost):
... print post.content
... elif isinstance(post, LinkPost):
... print 'Link:', post.url
... print
...
# Count all blog posts and its subtypes
>>> BlogPost.objects.count()
2
>>> TextPost.objects.count()
1
>>> LinkPost.objects.count()
1
# Count tagged posts
>>> BlogPost.objects(tags='mongoengine').count()
2
>>> BlogPost.objects(tags='mongodb').count()
1
テスト
テストスイートを実行するには、MongoDBのローカルインスタンスを標準ポートで実行していて、 nose
インストールしていることを確認してください。 次に、 python setup.py nosetests
実行します。
サポートされているすべてのPythonとPyMongoバージョンでテストスイートを実行するには、toxを使用できます。 ご使用の環境にサポートされているPythonバージョンがそれぞれインストールされていることを確認してから、
# Install tox
$ pip install tox
# Run the test suites
$ tox
テストのサブセットを実行する場合は、nosetestsの規則を使用します。
# Run all the tests in a particular test file
$ python setup.py nosetests --tests tests/fields/fields.py
# Run only particular test class in that file
$ python setup.py nosetests --tests tests/fields/fields.py:FieldTest
# Use the -s option if you want to print some debug statements or use pdb
$ python setup.py nosetests --tests tests/fields/fields.py:FieldTest -s
コミュニティ
貢献する
寄付を歓迎します! 投稿のガイドラインを参照してください