将基本mongoengine文档定义拉入flaskmongoengin

2024-05-17 04:05:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经使用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要求您首先设置flask上下文“db”,然后构建ODM定义,从“db”而不是基本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定义,从我的主flask应用程序导入“db”,然后在所有内容前面加上“db”。你知道吗

如果我简单地将所有内容都更改为“db.”版本,那可能会破坏我所有的遗留代码。你知道吗

因此,我认为在文档类上使用super()可能有一个技巧,可以检测我是将ODM导入Flask上下文还是从独立的数据处理脚本导入ODM。你知道吗

我也在想,我不想对每个文档的每个字段类型都进行super(),我应该能够构建或引用一个公共函数,为我处理这个问题。你知道吗

不过,我的超能力很弱。我甚至不确定这是不是最好的办法。我希望有人能够并且愿意分享一些关于如何处理这个问题的提示。你知道吗


Tags: 代码name文档flaskdb定义lengthmax