ข้อมูล: | MongoEngine เป็นเลเยอร์ที่มีลักษณะคล้าย ORM ที่ด้านบนของ PyMongo |
---|---|
พื้นที่เก็บข้อมูล: | https://github.com/MongoEngine/mongoengine |
ผู้เขียน: | แฮร์รี่ มาร์ (http://github.com/hmarr) |
ผู้ดูแล: | บาสเตียน เจอราร์ด (http://github.com/bagerard) |
MongoEngine เป็น Python Object-Document Mapper สำหรับการทำงานกับ MongoDB มีเอกสารประกอบอยู่ที่ 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
เรายินดีต้อนรับการมีส่วนร่วม! ดูแนวทางการบริจาค