정보: | 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을 사용하려면 최소한 다음 두 패키지가 필요합니다.
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
우리는 기여를 환영합니다! 기여 가이드라인 보기