Skip to content

Commit

Permalink
Added convenience method for viewing Query SQL without params.
Browse files Browse the repository at this point in the history
This is the old Query.as_sql() method revived: it's like Query.__str__,
but the parameters aren't substituted into the placeholders. Thus, it's
a more accurate representation of the SQL the (default) backend will
see. Entirely internal.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16655 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
malcolmt committed Aug 23, 2011
1 parent 0686c6b commit c3a0dcf
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions django/db/models/sql/query.py
Expand Up @@ -156,14 +156,21 @@ def __init__(self, model, where=WhereNode):
def __str__(self): def __str__(self):
""" """
Returns the query as a string of SQL with the parameter values Returns the query as a string of SQL with the parameter values
substituted in. substituted in (use sql_with_params() to see the unsubstituted string).
Parameter values won't necessarily be quoted correctly, since that is Parameter values won't necessarily be quoted correctly, since that is
done by the database interface at execution time. done by the database interface at execution time.
""" """
sql, params = self.get_compiler(DEFAULT_DB_ALIAS).as_sql() sql, params = self.sql_with_params()
return sql % params return sql % params


def sql_with_params(self):
"""
Returns the query as an SQL string and the parameters that will be
subsituted into the query.
"""
return self.get_compiler(DEFAULT_DB_ALIAS).as_sql()

def __deepcopy__(self, memo): def __deepcopy__(self, memo):
result = self.clone(memo=memo) result = self.clone(memo=memo)
memo[id(self)] = result memo[id(self)] = result
Expand Down

0 comments on commit c3a0dcf

Please sign in to comment.