Mongodb 烧瓶和蒙戈
考虑到一个完全建立在MongoDB之上的web服务,虽然我对PyMongo很熟悉,但我想知道你们是否对这两个ODM有任何正面或负面的体验/故事:MongoKit、MongoEngine和MongoAlchemy,后者有一个特定于烧瓶的包“烧瓶MongoAlchemy”.我没有任何真实的经验或故事,但我同时使用了MongoKit和MongoAlchemy,我个人决定尝试MongoAlchemy,因为我更喜欢它的语法(可能是因为我的Django传统)Mongodb 烧瓶和蒙戈,mongodb,flask,mongoengine,mongokit,Mongodb,Flask,Mongoengine,Mongokit,考虑到一个完全建立在MongoDB之上的web服务,虽然我对PyMongo很熟悉,但我想知道你们是否对这两个ODM有任何正面或负面的体验/故事:MongoKit、MongoEngine和MongoAlchemy,后者有一个特定于烧瓶的包“烧瓶MongoAlchemy”.我没有任何真实的经验或故事,但我同时使用了MongoKit和MongoAlchemy,我个人决定尝试MongoAlchemy,因为我更喜欢它的语法(可能是因为我的Django传统) MongoKit: class BlogPos
MongoKit:
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+',)
孟加拉语哲学:
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()
指定您的db和集合,这让我感觉不对(尽管您不必这样做)
两个都试试,然后选择一个对你更合适的
正如您已经提到的,有一个Flask MongoAlchemy扩展,它非常有效。
如果您想使用MongoKit,优秀的Flask文档将让您立即投入使用:
最棒的是,您可以尝试一个,如果您不喜欢,可以切换到另一个,或者直接切换到pymongo,而无需更改数据库中的任何内容。我使用MongoEngine时没有任何问题。我们已经编写了(收集的资源),其中包括wtform支持和flask调试器支持:
让我们在Python包索引中找到这个,它太棒了。这篇文章很棒,非常感谢。实际上,像odm这样有这么多选项是相当令人困惑的,希望有一个官方的odm