烧瓶和蒙古

时间:2011-07-13 02:33:11

标签: mongodb flask mongoengine mongokit

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

2 个答案:

答案 0 :(得分:22)

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

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

答案 1 :(得分:21)

我真的没有真正的经验或故事,但我和MongoKit和MongoAlchemy一起玩过,我个人决定尝试使用MongoAlchemy,因为我喜欢语法更好(可能是因为我的Django传统)


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


两者都可以帮助您验证数据,让您强制使用类似架构的东西(仅限应用程序级别),并为您节省一些打字(特别是括号)。

MongoKit更完整。我之所以选择MongoAlchemy,是因为我不想一直输入structure = {},并且使用con.test.example.BlogPost()指定你的数据库和集合只是感觉不对(尽管你不必这样做)。 / p>

尝试两者,并选择一个更适合你的那个。

正如您已经提到的,有一个Flask-MongoAlchemy扩展,它运行良好。 如果你想使用MongoKit,那么优秀的Flask文档可以让你立刻上手: http://flask.pocoo.org/docs/patterns/mongokit/

最棒的是你可以尝试一个,如果你不喜欢它,你可以切换到另一个,或者放到pymongo而不必更改数据库中的任何内容。