2011-07-13 17 views
15

Tamamen MongoDB üzerine inşa edilmiş bir web hizmeti düşünürken, PyMongo ile oldukça rahat olduğum sürece, bu ODM'lerden herhangi biri hakkında olumlu veya olumsuz bir deneyim/öykünüz olup olmadığını bilmek isterim: MongoKit, MongoEngine ve MongoAlchemy, ikincisi bir Flask özel paket "Flask-mongoalchemy" sahip.Flask and Mongo

+1

Aslında ODM olarak pek çok seçenek var oldukça kafa karıştırıcı bir offitial ODM – danielrvt

cevap

21

Gerçekten hiçbir gerçek deneyimim veya öyküm yok, ama MongoKit ve MongoAlchemy ile oynadım ve MongoAlchemy'yi denemeye karar verdim, çünkü sözdizimini biraz daha iyi seviyorum (muhtemelen benim Django mirasımdan dolayı)).


MongoKit:

class BlogPost(Document): 
    structure = { 
       'title':unicode, 
       'body':unicode, 
       'author':unicode, 
       'date_creation':datetime.datetime, 
       'rank':int 
       } 


MongoAlchemy:

class BloodDonor(Document): 
    first_name = StringField() 
    last_name = StringField() 
    age = IntField(min_value=0) 
    gender = EnumField(StringField(), 'male', 'female') 
    blood_type = EnumField(StringField(), 'O+','A+','B+','AB+',) 


Both, verileri doğrulamak için yardımcı olacaktır (bir şema gibi bir şey empoze izin verir sadece uygulama leve üzerinde l), ve size bazı yazarak (özellikle parantezler) kurtaracak.

MongoKit daha eksiksiz. MongoAlchemy'ı seçtim çünkü her zaman structure = {}'u yazmak istemedim ve db'nizi ve koleksiyonunuzu con.test.example.BlogPost() kullanarak belirledim (sadece bu şekilde yapmak zorunda olmasanız bile).

İkisini de deneyin ve sizin için daha iyi olanı seçin.

Daha önce de belirttiğiniz gibi, Flask-MongoAlchemy uzantısı var, bu harika çalışıyor. , http://flask.pocoo.org/docs/patterns/mongokit/

büyük şey bir başkasına geçiş yapabilirsiniz sevmiyorum eğer sadece bir deneyebilmenizdir: Eğer MongoKit kullanmak istiyorsanız , mükemmel Matara belgeleri hiçbir zaman gidiş alacak veya veritabanındaki herhangi bir şeyi değiştirmek zorunda kalmadan pymongo'ya bırakın.

+0

orada Bu konu edilmektedir olsaydı: Biz wtform destek ve şişe-ayıklayıcı desteğini de içerir (toplanan kaynaklar) yazdım harika, çok teşekkürler. – Ms01