将基本的mongoengine文档定义拉入flask-mongoengine

时间:2015-12-02 19:07:15

标签: python mongodb mongoengine flask-mongoengine

我一直在使用mongoengine一段时间,并且拥有大量的python数据处理代码,这些代码依赖于一组通用的对象文档模型。

现在我需要从Flask访问相同的mongodb实例。我想使用相同的ODM定义。

class User(Document):
    email = StringField(required=True)
    first_name = StringField(max_length=50)
    last_name = StringField(max_length=50)

问题是flask-mongoengine要求你首先设置烧瓶上下文“db”和然后构建你的ODM定义,从“db”而不是base继承文档类和字段类型mongoengine课程。

class User(db.Document):
    email = db.StringField(required=True)
    first_name = db.StringField(max_length=50)
    last_name = db.StringField(max_length=50)

我想,一个解决方案是复制所有现有的ODM定义,从我的主烧瓶应用程序导入“db”,然后在“db”之前添加所有内容。如果我这样做,我将不得不维护两组几乎相同的ODM定义。

如果我只是将所有内容更改为“db”。版本,这可能会破坏我的所有遗留代码。

所以我认为在文档类上使用super()可能有一个技巧,可以检测我是否将我的ODM导入Flask上下文,或者我是否从独立的数据处理脚本导入它。

我也在想我不希望super()每个文档的每个字段类型,我应该能够构建或引用一个为我处理的常用函数。

然而,我的超级()技能很弱。我甚至不确定这是否是最佳方法。我希望有人能够并且愿意分享一些关于如何处理这个问题的提示。

0 个答案:

没有答案