17

考虑一个完全建立在 MongoDB 之上的 Web 服务,虽然我对 PyMongo 很满意,但我想知道你们是否对以下任何一个 ODM 有任何积极或消极的经验/故事:MongoKit、MongoEngine 和 MongoAlchemy,后者有一个 Flask 特定的包“Flask-mongoalchemy”。

4

2 回答 2

22

我用 MongoEngine 和烧瓶没问题。我们已经编写了(收集的资源),其中还包括 wtform 支持和 flask-debugger 支持:

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

于 2011-08-16T15:59:48.633 回答
21

我真的没有任何真实的经验或故事可以提供,但我同时使用了 MongoKit 和 MongoAlchemy,我个人决定尝试 MongoAlchemy,因为我更喜欢语法(可能是由于我的 Django 传统)。


蒙古包

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


蒙古炼金术

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


两者都将帮助您验证数据,让您强加类似于模式的东西(仅在应用程序级别),并为您节省一些输入(特别是括号)。

MongoKit 更加完善。我选择 MongoAlchemy 是因为我不想一直打字structure = {},并且使用指定你的数据库和集合con.test.example.BlogPost()感觉不对(尽管你不必这样做)。

尝试两者,然后选择更适合您的一种。

正如您已经提到的,有一个 Flask-MongoAlchemy 扩展,效果很好。如果您想使用 MongoKit,优秀的 Flask 文档将让您立即上手:http: //flask.pocoo.org/docs/patterns/mongokit/

很棒的是,您可以尝试一个,如果您不喜欢它,您可以切换到另一个,或者直接使用 pymongo,而无需更改数据库中的任何内容。

于 2011-07-14T22:39:06.490 回答