gpt4 book ai didi

python - 使用 MongoEngine 在应用程序启动时定义集合名称的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-01 06:41:45 24 4
gpt4 key购买 nike

我在 Flask 应用程序中使用 MongoEngine 作为 ODM。根据传递的配置文档,MongoEngine应该使用不同的集合。

目前,我通过更改内部元变量 model._meta['collection'] 来实现此目的。是否有其他选择集合的方法?

from mongoengine import connect
from api_service.model import MyModel


create_app(config):

app = Flask(__name__)

# load app.config

connect(app.config['MONGODB_DB'],
host=app.config['MONGODB_HOST'],
port=app.config['MONGODB_PORT'],
username=app.config['MONGODB_USERNAME'],
password=app.config['MONGODB_PASSWORD'],
)



MyModel._meta['collection'] = app.config['MONGODB_MYMODEL_COLLECTION']

我知道您可以在模型的类主体中通过 meta:{} 定义集合(请参阅 here )。但我不在应用程序上下文中,因此我无法访问“app.config”。

最佳答案

您可以简单地修改类本身内的meta属性

class MyModel(Document):
meta = {"collection": "my_actual_collection_name"}
...

Check This for more meta attributes you can use

<小时/>

解决方案更新

我定义了一个帮助程序类,可以提供对应用程序配置的访问

class AppConfigHelper:
from flask import current_app
APP_CONFIG = current_app.config

并在文档中导入并使用该类来获取集合名称。

class MyModel(Document):
meta = {'collection': AppConfigHelper.APP_CONFIG['MONGODB_MYMODEL_COLLECTION']}
...

这不是我能想到的最好的解决方案,但它可以完成任务。

<小时/>

Caution: this is not gonna work if you run it separately from Flask, it is going to crash, you can run it inside the app itself, or using flask shell

关于python - 使用 MongoEngine 在应用程序启动时定义集合名称的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59427392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com