情報: | MongoEngine は、PyMongo の上にある ORM のようなレイヤーです。 |
---|---|
リポジトリ: | https://github.com/MongoEngine/mongoengine |
著者: | ハリー・マー (http://github.com/hmarr) |
メンテナ: | バスティアン ジェラルド (http://github.com/bagerard) |
MongoEngine は、MongoDB を操作するための Python オブジェクト ドキュメント マッパーです。ドキュメントは https://mongoengine-odm.readthedocs.io で入手できます。現在、チュートリアル、ユーザー ガイド、および API リファレンスがあります。
MongoEngine は現在、MongoDB v3.6、v4.0、v4.4、v5.0、v6.0、および v7.0 に対してテストされています。将来のバージョンもサポートされる予定ですが、現時点では積極的にテストされていません。最新の MongoDB バージョンで問題が発生した場合は、必ずイシューをオープンするか、プル リクエストを送信してください。
virtualenv と pip の使用をお勧めします。その後、 python -m pip install -U mongoengine
を使用できます。 setuptools がある場合もあるので、 easy_install -U mongoengine
を使用できます。別のオプションは、pipenv です。その後、 pipenv install mongoengine
使用して、仮想環境の作成とパッケージのインストールの両方を行うことができます。それ以外の場合は、GitHub からソースをダウンロードして、 python setup.py install
実行できます。
Python2 のサポートは MongoEngine 0.20.0 で廃止されました。
すべての依存関係は、python -m pip を介して簡単にインストールできます。 MongoEngine を使用するには、少なくとも次の 2 つのパッケージが必要です。
DateTimeField
利用する場合は、より柔軟な日付パーサーを使用することもできます。
ImageField
またはImageGridFsProxy
使用する必要がある場合:
シグナルを使用する必要がある場合:
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 )
...
# 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 のローカル インスタンスを実行しており、 pytest
インストールされていることを確認してください。次に、 pytest tests/
実行します。
サポートされているすべての Python および PyMongo バージョンでテスト スイートを実行するには、 tox
使用できます。サポートされている Python の各バージョンが環境にインストールされていることを確認してから、次の操作を行う必要があります。
# Install tox
$ python -m pip install tox
# Run the test suites
$ tox
寄付を歓迎します!投稿ガイドラインを参照してください