Mongodb 烧瓶和蒙戈

Mongodb 烧瓶和蒙戈,mongodb,flask,mongoengine,mongokit,Mongodb,Flask,Mongoengine,Mongokit,考虑到一个完全建立在MongoDB之上的web服务,虽然我对PyMongo很熟悉,但我想知道你们是否对这两个ODM有任何正面或负面的体验/故事:MongoKit、MongoEngine和MongoAlchemy,后者有一个特定于烧瓶的包“烧瓶MongoAlchemy”.我没有任何真实的经验或故事,但我同时使用了MongoKit和MongoAlchemy,我个人决定尝试MongoAlchemy,因为我更喜欢它的语法(可能是因为我的Django传统) MongoKit: class BlogPos

考虑到一个完全建立在MongoDB之上的web服务,虽然我对PyMongo很熟悉,但我想知道你们是否对这两个ODM有任何正面或负面的体验/故事:MongoKit、MongoEngine和MongoAlchemy,后者有一个特定于烧瓶的包“烧瓶MongoAlchemy”.

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


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