Informasi: | MongoEngine adalah lapisan mirip ORM di atas PyMongo. |
---|---|
Gudang: | https://github.com/MongoEngine/mongoengine |
Pengarang: | Harry Marr (http://github.com/hmarr) |
Pemelihara: | Bastien Gerard (http://github.com/bagerard) |
MongoEngine adalah Pemeta Dokumen Objek Python untuk bekerja dengan MongoDB. Dokumentasi tersedia di https://mongoengine-odm.readthedocs.io - saat ini terdapat tutorial, panduan pengguna, dan referensi API.
MongoEngine saat ini diuji terhadap MongoDB v3.6, v4.0, v4.4, v5.0, v6.0 dan v7.0. Versi mendatang juga harus didukung, tetapi saat ini belum diuji secara aktif. Pastikan untuk membuka masalah atau mengirimkan permintaan penarikan jika Anda mengalami masalah dengan versi MongoDB yang lebih baru.
Kami merekomendasikan penggunaan virtualenv dan pip. Anda kemudian dapat menggunakan python -m pip install -U mongoengine
. Anda mungkin juga memiliki alat pengaturan sehingga Anda dapat menggunakan easy_install -U mongoengine
. Pilihan lainnya adalah pipenv. Anda kemudian dapat menggunakan pipenv install mongoengine
untuk membuat lingkungan virtual dan menginstal paket. Jika tidak, Anda dapat mengunduh sumber dari GitHub dan menjalankan python setup.py install
.
Dukungan untuk Python2 dihentikan dengan MongoEngine 0.20.0
Semua dependensi dapat dengan mudah diinstal melalui python -m pip. Setidaknya, Anda memerlukan dua paket ini untuk menggunakan MongoEngine:
Jika Anda menggunakan DateTimeField
, Anda mungkin juga menggunakan pengurai tanggal yang lebih fleksibel:
Jika Anda perlu menggunakan ImageField
atau ImageGridFsProxy
:
Jika Anda perlu menggunakan sinyal:
Beberapa contoh sederhana tampilan kode 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
Untuk menjalankan rangkaian pengujian, pastikan Anda menjalankan instance lokal MongoDB pada port standar dan telah menginstal pytest
. Kemudian, jalankan pytest tests/
.
Untuk menjalankan rangkaian pengujian pada setiap versi Python dan PyMongo yang didukung, Anda dapat menggunakan tox
. Anda harus memastikan bahwa Anda telah menginstal setiap versi Python yang didukung di lingkungan Anda dan kemudian:
# Install tox
$ python -m pip install tox
# Run the test suites
$ tox
Kami menyambut kontribusi! Lihat pedoman Kontribusi