diff options
| author | Sergey Fedoseev <fedoseev.sergey@gmail.com> | 2017-08-24 01:26:24 +0500 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-08-23 16:26:24 -0400 |
| commit | dca67bb2c27cfa1b23cb6519c544ce467813e0ec (patch) | |
| tree | 79a0d0c0d19f9ca81cd73baba7f5e67461575220 /django/db/models/sql | |
| parent | 4302167939767e713388c49d8af3cefe27695629 (diff) | |
Refs #28459 -- Improved performance of SQLCompiler.apply_converters().
Diffstat (limited to 'django/db/models/sql')
| -rw-r--r-- | django/db/models/sql/compiler.py | 9 |
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): |
