GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

MongoEngine

mongoengine – MongoDB で作業するためのPython Object-Document-Mapper

投稿日:

MongoDB http://mongoengine.org で作業するためのPython Object-Document-Mapper

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 +で問題が発生した場合は、問題を開いたりプルリクエストを送信してください。

インストール

virtualenvpipの使用をお勧めします。 その後、 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

コミュニティ

貢献する

寄付を歓迎します! 投稿のガイドラインを参照してください







-MongoEngine
-, , , , , ,

執筆者: