Отсутствие ведения журнала 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
...