考虑完全建立在MongoDB之上的Web服务,虽然我对PyMongo非常满意,但我想知道你们是否对这些ODM中的任何一个有任何积极或消极的经历/故事:MongoKit,MongoEngine和MongoAlchemy ,后者有Flask特定包装“Flask-mongoalchemy”。
答案 0 :(得分:22)
我使用带烧瓶的MongoEngine没问题。我们已经编写了(收集的资源),其中包括wtform支持和flask-debugger支持:
答案 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而不必更改数据库中的任何内容。