Подключение к внешней MongoDB с заполненными данными через Django - PullRequest
0 голосов
/ 10 января 2019

У меня есть доступ к гигантской базе данных MongoDB с данными, которые были собраны некоторым оборудованием. В настоящее время он находится на удаленном сервере. Мне нужно развивать его, используя Django (желательно).

Я могу итерацию с ним нормально, используя прямо вверх pymongo, но я бы хотел сделать это больше, используя встроенные функции Django. Мне очень нравится способ обработки данных Django, а не выполнение запросов mongodb. Поэтому я установил Djongo - разъем для Django.

С Pymongo я просто использую его вот так

client = MongoClient('ipaddress',
                     username='ronald',
                     password='password',
                     authSource='scanning',
                     authMechanism='SCRAM-SHA-1')

db = client["scanning"]

collection = db["some_collection"]

Это отлично работает, и я могу без проблем подключиться к коллекции.

Итак, переходя к Джонго, я предполагаю, что смогу подключиться к нему аналогичным образом, однако продолжаю получать тайм-ауты. Это мои настройки базы данных в Settings.py

DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'ENFORCE_SCHEMA': False,
        'NAME': 'some_collection',
        'HOST': 'ipaddress',
        'PORT': 27017,
        'USER': 'ronald',
        'PASSWORD': 'password',
        'AUTH_SOURCE': 'scanning',
        'AUTH_MECHANISM': 'SCRAM-SHA-1',
    }
}

Время ожидания запуска сервера истекает.

Возможно ли это сделать?

Не лучше ли сделать локальный дамп БД и хранить его в чистой MongoDB, оптимизированной для Django?

Должен ли я просто принять вкус и выполнять только монго-запросы?

Любой совет будет оценен.

Спасибо

Edit:

Вот отсылка к ошибке

System check identified no issues (0 silenced).
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x10d726268>
Traceback (most recent call last):
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/django/utils/autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/django/core/management/commands/runserver.py", line 120, in inner_run
    self.check_migrations()
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/django/core/management/base.py", line 442, in check_migrations
    executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/django/db/migrations/executor.py", line 18, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/django/db/migrations/loader.py", line 49, in __init__
    self.build_graph()
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/django/db/migrations/loader.py", line 212, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/django/db/migrations/recorder.py", line 61, in applied_migrations
    if self.has_table():
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/django/db/migrations/recorder.py", line 44, in has_table
    return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor())
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/django/db/backends/base/introspection.py", line 56, in table_names
    return get_names(cursor)
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/django/db/backends/base/introspection.py", line 51, in get_names
    return sorted(ti.name for ti in self.get_table_list(cursor)
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/djongo/introspection.py", line 46, in get_table_list
    for c in cursor.db_conn.collection_names(False)
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/pymongo/database.py", line 715, in collection_names
    nameOnly=True, **kws)]
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/pymongo/database.py", line 674, in list_collections
    read_pref) as (sock_info, slave_okay):
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/contextlib.py", line 112, in __enter__
    return next(self.gen)
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/pymongo/mongo_client.py", line 1099, in _socket_for_reads
    server = topology.select_server(read_preference)
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/pymongo/topology.py", line 224, in select_server
    address))
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/pymongo/topology.py", line 183, in select_servers
    selector, server_timeout, address)
  File "/Users/ronald/dev/clients/qc/datamanagement/venv/lib/python3.7/site-packages/pymongo/topology.py", line 199, in _select_servers_loop
    self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: ipaddress:27017: timed out
...