Создать упаковщик соединений mongoengine для использования в нескольких модулях - PullRequest
0 голосов
/ 15 января 2019

Я создаю оболочку для решения всех моих соединений с mongoengine, поэтому я создал функцию, которая считывает конфигурацию mongoDB из файла и подключается к ней.

Функция выглядит так:

def connect_mongo_odm(config_file_location, db_name):
    if db_name:
        base_path = ['databases', db_name]
        conf_specs = {
            'host': {
                'path': base_path + ['host']
            },
            'port': {
                'path': base_path + ['port']
        }
    }

    fileConfiguration = dao_utils.readConfiguration(config_file_location, conf_specs)

    auth = None
    host = fileConfiguration.get('host', None)

    host = "mongodb://" + host

    connect(alias=db_name,
            host=host,
            socketKeepAlive=True, socketTimeoutMS=30000)

И я использую это как:

# import previous function
# This is another module in my application
connect_mongo_odm('/path/to/config/file', 'dbName')

Но когда я пытаюсь сохранить документ, я получаю исключение о том, что у меня не определено соединение по умолчанию.

1 Ответ

0 голосов
/ 04 июня 2019

Вам необходимо определить meta = {"db_alias": "your_connection_alias"} в каждом из ваших классов документов. Если вы не установите его, он будет использовать псевдоним «по умолчанию».

См. Здесь пример: https://stackoverflow.com/a/56434241/6203472

...