Отсутствие ведения журнала Django при тестировании через интерактивную оболочку

Мы добавили нижеприведенный пример для отображения SQL-запросов на консоли. И, в качестве доказательства концепции, мы следуем онлайн-учебнику для создания тестового проекта.

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'level': 'DEBUG',
            'handlers': ['console'],
        }
    },
}

На шаге "Изучите функциональность бесплатного администратора", например, логирование SQL в консоли работает в соответствии с требованиями. Так, при нажатии на кнопку мы видим примеры SQL логов, как показано ниже.

Однако, при использовании интерактивной оболочки через команду python manage.py shell и вызове команд python, таких как Choice.objects.filter(question__pub_date__year=current_year), мы не видели никакого журнала SQL.

Мы задаемся вопросом, не упустили ли мы что-нибудь для ведения логов в интерактивной оболочке.

Мы тестируем с Django v3.1.4 и Python v3.7.6. Просто дайте нам знать, если вам нужно больше деталей.

Пример записи логов бэкенда Django:

...
(0.000) SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."expire_date" > '2022-11-21 23:03:45.762894' AND "django_session"."session_key" = 'dd9uy7q873cijz0603l5uu9zl3wujr2f') LIMIT 21; args=('2022-11-21 23:03:45.762894', 'dd9uy7q873cijz0603l5uu9zl3wujr2f')
(0.000) SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 1 LIMIT 21; args=(1,)
(0.000) BEGIN; args=None
(0.000) SELECT "polls_question"."id", "polls_question"."question_text", "polls_question"."pub_date" FROM "polls_question" WHERE "polls_question"."id" = 1 LIMIT 21; args=(1,)
[21/Nov/2022 23:03:45] "GET /admin/polls/question/1/change/ HTTP/1.1" 200 6693
(0.000) SELECT "django_session"."session_key", "django_session"."session_data", "django_session"."expire_date" FROM "django_session" WHERE ("django_session"."expire_date" > '2022-11-21 23:03:45.897163' AND "django_session"."session_key" = 'dd9uy7q873cijz0603l5uu9zl3wujr2f') LIMIT 21; args=('2022-11-21 23:03:45.897163', 'dd9uy7q873cijz0603l5uu9zl3wujr2f')
(0.000) SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 1 LIMIT 21; args=(1,)
[21/Nov/2022 23:03:45] "GET /admin/jsi18n/ HTTP/1.1" 200 3187
...
Вернуться на верх