2011-07-13 27 views
15

Suy nghĩ về một dịch vụ web hoàn toàn được xây dựng trên MongoDB, trong khi tôi khá dễ nhầm lẫn với PyMongo, tôi muốn biết các bạn có bất kỳ trải nghiệm tích cực hay tiêu cực nào về một trong những ODM này: MongoKit, MongoEngine và MongoAlchemy, sau này có một gói Flask cụ thể "Flask-mongoalchemy".Flask và Mongo

+1

Trên thực tế là khá khó hiểu có rất nhiều tùy chọn như odm, muốn có một odm offitial – danielrvt

Trả lời

21

Tôi không thực sự có bất kỳ kinh nghiệm thực tế hoặc câu chuyện để cung cấp, nhưng tôi chơi với cả MongoKit và MongoAlchemy, và cá nhân tôi quyết định thử MongoAlchemy, bởi vì tôi thích cú pháp tốt hơn một chút (có lẽ là do di sản Django của tôi).


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+',) 


Cả hai sẽ giúp bạn để xác nhận dữ liệu của bạn, sẽ cho phép bạn áp đặt một cái gì đó giống như một schema (chỉ trên ứng dụng leve l), và sẽ giúp bạn tiết kiệm một số đánh máy (cụ thể là dấu ngoặc vuông).

MongoKit hoàn chỉnh hơn. Tôi đã chọn MongoAlchemy vì tôi không muốn nhập structure = {} mọi lúc, và chỉ định db và bộ sưu tập của bạn bằng cách sử dụng con.test.example.BlogPost() chỉ cảm thấy sai (mặc dù bạn không phải thực hiện theo cách này).

Hãy thử cả hai và chọn loại phù hợp nhất với bạn.

Như bạn đã đề cập, có một phần mở rộng Flask-MongoAlchemy, hoạt động tuyệt vời. Nếu bạn muốn sử dụng MongoKit, tài liệu Flask tuyệt vời sẽ giúp bạn có được sẽ không có thời gian: http://flask.pocoo.org/docs/patterns/mongokit/

Điều tuyệt vời là bạn có thể chỉ cần cố gắng một, nếu bạn không thích nó, bạn có thể chuyển sang khác, hoặc thả xuống pymongo mà không phải thay đổi bất kỳ thứ gì trong cơ sở dữ liệu.

+0

bài này tuyệt vời, cảm ơn rất nhiều. – Ms01

22

Tôi sử dụng MongoEngine với bình không có vấn đề gì. Chúng tôi đã viết (nguồn thu) trong đó bao gồm hỗ trợ wtform và hỗ trợ bình-debugger cũng như:

https://github.com/MongoEngine/flask-mongoengine/

+7

Cho phép nhận được điều này trong chỉ mục Gói Python, thật tuyệt vời. –