From dca67bb2c27cfa1b23cb6519c544ce467813e0ec Mon Sep 17 00:00:00 2001 From: Sergey Fedoseev Date: Thu, 24 Aug 2017 01:26:24 +0500 Subject: Refs #28459 -- Improved performance of SQLCompiler.apply_converters(). --- django/db/models/sql/compiler.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'django/db/models/sql') 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): -- cgit v1.3