معلومات: | MongoEngine هي طبقة تشبه ORM أعلى PyMongo. |
---|---|
مستودع: | https://github.com/MongoEngine/mongoengine |
مؤلف: | هاري مار (http://github.com/hmarr) |
المشرف: | باستيان جيرارد (http://github.com/bagerard) |
MongoEngine هو مخطط كائنات مستند Python للعمل مع MongoDB. الوثائق متاحة على https://mongoengine-odm.readthedocs.io - يوجد حاليًا برنامج تعليمي ودليل مستخدم ومرجع لواجهة برمجة التطبيقات.
يتم اختبار MongoEngine حاليًا مقابل MongoDB v3.6 وv4.0 وv4.4 وv5.0 وv6.0 وv7.0. من المفترض أن تكون الإصدارات المستقبلية مدعومة أيضًا، ولكن لا يتم اختبارها بشكل نشط في الوقت الحالي. تأكد من فتح مشكلة أو إرسال طلب سحب إذا واجهت أي مشاكل مع إصدارات MongoDB الأحدث.
نوصي باستخدام Virtualenv وpip. يمكنك بعد ذلك استخدام python -m pip install -U mongoengine
. قد يكون لديك أيضًا أدوات الإعداد وبالتالي يمكنك استخدام 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
نحن نرحب بالمساهمات! راجع إرشادات المساهمة