summaryrefslogtreecommitdiff
path: root/django/db/models/sql
diff options
context:
space:
mode:
authorSergey Fedoseev <fedoseev.sergey@gmail.com>2017-08-24 01:26:24 +0500
committerTim Graham <timograham@gmail.com>2017-08-23 16:26:24 -0400
commitdca67bb2c27cfa1b23cb6519c544ce467813e0ec (patch)
tree79a0d0c0d19f9ca81cd73baba7f5e67461575220 /django/db/models/sql
parent4302167939767e713388c49d8af3cefe27695629 (diff)
Refs #28459 -- Improved performance of SQLCompiler.apply_converters().
Diffstat (limited to 'django/db/models/sql')
-rw-r--r--django/db/models/sql/compiler.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py
index f92df8c996..2afc3635fa 100644
--- a/django/db/models/sql/compiler.py
+++ b/django/db/models/sql/compiler.py
@@ -942,16 +942,15 @@ class SQLCompiler:
def apply_converters(self, rows, converters):
connection = self.connection
converters = list(converters.items())
- for row in rows:
- row = list(row)
+ for row in map(list, rows):
for pos, (convs, expression) in converters:
value = row[pos]
for converter in convs:
value = converter(value, expression, connection)
row[pos] = value
- yield tuple(row)
+ yield row
- def results_iter(self, results=None):
+ def results_iter(self, results=None, tuple_expected=False):
"""Return an iterator over the results from executing this query."""
if results is None:
results = self.execute_sql(MULTI)
@@ -960,6 +959,8 @@ class SQLCompiler:
rows = chain.from_iterable(results)
if converters:
rows = self.apply_converters(rows, converters)
+ if tuple_expected:
+ rows = map(tuple, rows)
return rows
def has_results(self):