Skip to content

Commit

Permalink
Handle postgres CursorDebugWrapper in debugsqlshell.
Browse files Browse the repository at this point in the history
  • Loading branch information
tim-schilling committed Dec 20, 2019
1 parent 5bc6c9f commit 7b22659
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
7 changes: 6 additions & 1 deletion debug_toolbar/management/commands/debugsqlshell.py
Expand Up @@ -2,7 +2,9 @@

import sqlparse
from django.core.management.commands.shell import Command # noqa
from django.db import connection
from django.db.backends import utils as db_backends_utils
from django.db.backends.postgresql import base as psql_base

# 'debugsqlshell' is the same as the 'shell'.

Expand All @@ -20,4 +22,7 @@ def execute(self, sql, params=()):
print("{} [{:.2f}ms]".format(formatted_sql, duration))


db_backends_utils.CursorDebugWrapper = PrintQueryWrapper
if connection.vendor == "postgresql":
psql_base.CursorDebugWrapper = PrintQueryWrapper
else:
db_backends_utils.CursorDebugWrapper = PrintQueryWrapper
7 changes: 5 additions & 2 deletions tests/commands/test_debugsqlshell.py
Expand Up @@ -4,14 +4,16 @@
from django.contrib.auth.models import User
from django.core import management
from django.db.backends import utils as db_backends_utils
from django.db.backends.postgresql import base as psql_base
from django.test import TestCase
from django.test.utils import override_settings


@override_settings(DEBUG=True)
class DebugSQLShellTestCase(TestCase):
def setUp(self):
self.original_cursor_wrapper = db_backends_utils.CursorDebugWrapper
self.original_utils_wrapper = db_backends_utils.CursorDebugWrapper
self.original_psql_wrapper = psql_base.CursorDebugWrapper
# Since debugsqlshell monkey-patches django.db.backends.utils, we can
# test it simply by loading it, without executing it. But we have to
# undo the monkey-patch on exit.
Expand All @@ -20,7 +22,8 @@ def setUp(self):
management.load_command_class(app_name, command_name)

def tearDown(self):
db_backends_utils.CursorDebugWrapper = self.original_cursor_wrapper
db_backends_utils.CursorDebugWrapper = self.original_utils_wrapper
psql_base.CursorDebugWrapper = self.original_psql_wrapper

def test_command(self):
original_stdout, sys.stdout = sys.stdout, io.StringIO()
Expand Down

0 comments on commit 7b22659

Please sign in to comment.