Не могу увидеть SQL-запросы с несколькими ландшафтом базы данных - PullRequest
0 голосов
/ 12 февраля 2019

Django 2.1.7, MySQL.Конфигурация DATABASES выглядит следующим образом:

DATABASES = {
    'default': {},
    'auth_db': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'auth',
        ...
    },
    'db1': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'db1',
        ...
    },
    'db2': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'd2',
        ...
    }
}

У меня возникают различные проблемы с просмотром необработанных запросов SQL:

1) Не удается распечатать запрос определенного запроса:

qs = Model.objects.using("db2").filter(...)
print(qs.query)

Этокод сбрасывается ImproperlyConfigured, потому что он не учитывает .using("db2"), и почему-то проверяет БД по умолчанию, которая является пустой (Пустой default_db вполне приемлем, как сказано в документации django)

2) Когда во время выполнения я открываю оболочку дляМониторинг запросов:

from django.db import connections
print(connections["db1"].queries)

Я просто вижу это:

[{'sql': 'None', 'time': '0.001'},
 {'sql': 'None', 'time': '0.000'},
 {'sql': 'None', 'time': '0.008'}]

debug=True устанавливается так, как сказано в документах.

Каждый имеет опыт работы с такого родавыдает несколько дБ?

РЕДАКТИРОВАТЬ: Мои маршрутизаторы базы данных настроены хорошо, как сказано в документации.Все хорошо во время выполнения, но для целей отладки мне, конечно, нужна оболочка для ручного тестирования наборов запросов в разных базах данных.

1 Ответ

0 голосов
/ 12 февраля 2019

Параметр DATABASES должен настраивать базу данных по умолчанию;также может быть указано любое количество дополнительных баз данных.

Я нахожу это из database doc .Таким образом, вы не можете установить default пустым.Таким образом, вы должны установить значение по умолчанию, вставив фиктивные данные.

Если вы решили первую проблему, но вторая проблема не устранена, пожалуйста, сообщите мне.

Редактировать:

Если концепциябаза данных по умолчанию не имеет смысла в контексте вашего проекта, вы должны быть осторожны, чтобы всегда указывать базу данных, которую вы хотите использовать.Django требует, чтобы была определена запись базы данных по умолчанию, но словарь параметров можно оставить пустым, если он не будет использоваться.Для этого необходимо настроить DATABASE_ROUTERS для всех моделей ваших приложений, в том числе в любых используемых вами приложениях сторонних разработчиков и сторонних приложениях, чтобы запросы не направлялись в базу данных по умолчанию.Ниже приведен пример фрагмента settings.py, в котором определены две базы данных не по умолчанию, а запись по умолчанию намеренно оставлена ​​пустой:

С this doc .Поэтому вам нужно настроить DATABASE_ROUTERS .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...