Nano Hash - криптовалюты, майнинг, программирование

Запустите manage.py shell_plus --print-sql в консоли Pycharm Django.

Есть ли способ настроить консоль Pycharm Django для запуска shell_plus из django_extensions? В частности, я хочу распечатать SQL для каждой операции ORM. Я пробовал этот скрипт, передавая параметры print_sql, но он не работает. Заранее спасибо.

import sys
import django
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
if 'setup' in dir(django): django.setup()
import django_manage_shell; django_manage_shell.run(PROJECT_ROOT)
from django_extensions.management import shells
from django.core.management.color import color_style
style = color_style(force_color=True)
# Default settings for shell_plus
shell_plus_default_settings = {
    'ipython':         True,
    'print_sql':       True,
}
g = globals()
objects_to_import = shells.import_objects(shell_plus_default_settings, style)
g.update(objects_to_import)
print(style.NOTICE("Python %s on %s" % (sys.version, sys.platform)))
print(style.NOTICE("Django %s" % django.get_version()))
print(style.SUCCESS("Shell Prepared. Enjoy!"))

  • Отвечает ли это на ваш вопрос? Запустить shell_plus через PyCharm? 18.01.2020
  • Нет, поэтому я задал еще один вопрос 20.01.2020
  • Вы пытались включить его с помощью параметра конфигурации settings.py? SHELL_PLUS_PRINT_SQL = True 20.01.2020
  • Конечно, не рабочий. 20.01.2020

Ответы:


1

вот тот, который работает для меня. Одна вещь, которая важна, - это порядок вещей - делайте вещи shell_plus до django_manage_shell.run(...)

import sys; print('Python %s on %s' % (sys.version, sys.platform))
import django; print('Django %s' % django.get_version())
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
if 'setup' in dir(django): django.setup()
from django_extensions.management.shells import import_objects
from django.core.management.color import no_style

globals().update(import_objects({"dont_load": [], "quiet_load": False}, no_style()))
import django_manage_shell; django_manage_shell.run(PROJECT_ROOT)
26.10.2020

2

Вы можете включить функцию печати SQL в консоли PyCharm Django, используя патч обезьяны, выполненный в django_extensions.management.debug_cursor.monkey_patch_cursordebugwrapper — просто активируйте менеджер контекста в вашем начальном скрипте (или в вашей текущей открытой консоли) вот так

monkey_patch_cursordebugwrapper(print_sql=True).__enter__()

Вот весь сценарий запуска моей консоли: https://gist.github.com/gruuya/e837b3037781c715185d409499fabd7d

Однако обратите внимание, что из-за того, что отладчику PyCharm необходимо отображать переменные на панели переменных, запросы Django больше не являются ленивыми, а вместо этого оцениваются, как только они назначаются переменной (вы можете обойти это, например, создав лямбда-выражения). которые выполняют нужный запрос).

03.02.2021
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..