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
Original file line number Diff line number Diff line change
Expand Up @@ -156,14 +156,21 @@ def __init__(self, model, where=WhereNode):
def __str__(self):
"""
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
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

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):
result = self.clone(memo=memo)
memo[id(self)] = result
Expand Down

0 comments on commit c3a0dcf

Please sign in to comment.