diff options
Diffstat (limited to 'lib/sqlalchemy/engine/result.py')
| -rw-r--r-- | lib/sqlalchemy/engine/result.py | 136 |
1 files changed, 67 insertions, 69 deletions
diff --git a/lib/sqlalchemy/engine/result.py b/lib/sqlalchemy/engine/result.py index d86322e51..06a81aa6c 100644 --- a/lib/sqlalchemy/engine/result.py +++ b/lib/sqlalchemy/engine/result.py @@ -9,7 +9,6 @@ and :class:`.RowProxy.""" - from .. import exc, util from ..sql import expression, sqltypes import collections @@ -75,7 +74,7 @@ except ImportError: if isinstance(key, slice): l = [] for processor, value in zip(self._processors[key], - self._row[key]): + self._row[key]): if processor is None: l.append(value) else: @@ -85,8 +84,8 @@ except ImportError: raise if index is None: raise exc.InvalidRequestError( - "Ambiguous column name '%s' in result set! " - "try 'use_labels' option on select statement." % key) + "Ambiguous column name '%s' in result set! " + "try 'use_labels' option on select statement." % key) if processor is not None: return processor(self._row[index]) else: @@ -219,15 +218,14 @@ class ResultMetaData(object): if context.result_map: try: - name, obj, type_ = context.result_map[colname - if self.case_sensitive - else colname.lower()] + name, obj, type_ = context.result_map[ + colname if self.case_sensitive else colname.lower()] except KeyError: name, obj, type_ = \ colname, None, typemap.get(coltype, sqltypes.NULLTYPE) else: name, obj, type_ = \ - colname, None, typemap.get(coltype, sqltypes.NULLTYPE) + colname, None, typemap.get(coltype, sqltypes.NULLTYPE) processor = context.get_result_processor(type_, colname, coltype) @@ -240,9 +238,9 @@ class ResultMetaData(object): # populate primary keymap, looking for conflicts. if primary_keymap.setdefault( - name if self.case_sensitive - else name.lower(), - rec) is not rec: + name if self.case_sensitive + else name.lower(), + rec) is not rec: # place a record that doesn't have the "index" - this # is interpreted later as an AmbiguousColumnError, # but only when actually accessed. Columns @@ -250,8 +248,8 @@ class ResultMetaData(object): # aren't used; integer access is always # unambiguous. primary_keymap[name - if self.case_sensitive - else name.lower()] = rec = (None, obj, None) + if self.case_sensitive + else name.lower()] = rec = (None, obj, None) self.keys.append(colname) if obj: @@ -263,16 +261,15 @@ class ResultMetaData(object): # keymap[o] = (None, obj, None) if translate_colname and \ - untranslated: + untranslated: keymap[untranslated] = rec # overwrite keymap values with those of the # high precedence keymap. keymap.update(primary_keymap) - @util.pending_deprecation("0.8", "sqlite dialect uses " - "_translate_colname() now") + "_translate_colname() now") def _set_keymap_synonym(self, name, origname): """Set a synonym for the given name. @@ -282,8 +279,8 @@ class ResultMetaData(object): """ rec = (processor, obj, i) = self._keymap[origname if - self.case_sensitive - else origname.lower()] + self.case_sensitive + else origname.lower()] if self._keymap.setdefault(name, rec) is not rec: self._keymap[name] = (processor, obj, None) @@ -298,26 +295,26 @@ class ResultMetaData(object): # pickle/unpickle roundtrip elif isinstance(key, expression.ColumnElement): if key._label and ( - key._label - if self.case_sensitive - else key._label.lower()) in map: + key._label + if self.case_sensitive + else key._label.lower()) in map: result = map[key._label - if self.case_sensitive - else key._label.lower()] + if self.case_sensitive + else key._label.lower()] elif hasattr(key, 'name') and ( - key.name - if self.case_sensitive - else key.name.lower()) in map: + key.name + if self.case_sensitive + else key.name.lower()) in map: # match is only on name. result = map[key.name - if self.case_sensitive - else key.name.lower()] + if self.case_sensitive + else key.name.lower()] # search extra hard to make sure this # isn't a column/label name overlap. # this check isn't currently available if the row # was unpickled. if result is not None and \ - result[1] is not None: + result[1] is not None: for obj in result[1]: if key._compare_name_for_result(obj): break @@ -327,7 +324,7 @@ class ResultMetaData(object): if raiseerr: raise exc.NoSuchColumnError( "Could not locate column in row for column '%s'" % - expression._string_or_unprintable(key)) + expression._string_or_unprintable(key)) else: return None else: @@ -398,7 +395,7 @@ class ResultProxy(object): self.cursor = self._saved_cursor = context.cursor self.connection = context.root_connection self._echo = self.connection._echo and \ - context.engine._should_log_debug() + context.engine._should_log_debug() self._init_metadata() def _init_metadata(self): @@ -414,7 +411,7 @@ class ResultProxy(object): else: self._metadata = ResultMetaData(self, metadata) if self._echo: - self.context.engine.logger.debug( + self.context.engine.logger.debug( "Col %r", tuple(x[0] for x in metadata)) def keys(self): @@ -469,7 +466,7 @@ class ResultProxy(object): return self.context.rowcount except Exception as e: self.connection._handle_dbapi_exception( - e, None, None, self.cursor, self.context) + e, None, None, self.cursor, self.context) @property def lastrowid(self): @@ -491,8 +488,8 @@ class ResultProxy(object): return self._saved_cursor.lastrowid except Exception as e: self.connection._handle_dbapi_exception( - e, None, None, - self._saved_cursor, self.context) + e, None, None, + self._saved_cursor, self.context) @property def returns_rows(self): @@ -548,7 +545,7 @@ class ResultProxy(object): self.closed = True self.connection._safe_close_cursor(self.cursor) if _autoclose_connection and \ - self.connection.should_close_with_result: + self.connection.should_close_with_result: self.connection.close() # allow consistent errors self.cursor = None @@ -590,17 +587,17 @@ class ResultProxy(object): if not self.context.compiled: raise exc.InvalidRequestError( - "Statement is not a compiled " - "expression construct.") + "Statement is not a compiled " + "expression construct.") elif not self.context.isinsert: raise exc.InvalidRequestError( - "Statement is not an insert() " - "expression construct.") + "Statement is not an insert() " + "expression construct.") elif self.context._is_explicit_returning: raise exc.InvalidRequestError( - "Can't call inserted_primary_key " - "when returning() " - "is used.") + "Can't call inserted_primary_key " + "when returning() " + "is used.") return self.context.inserted_primary_key @@ -615,12 +612,12 @@ class ResultProxy(object): """ if not self.context.compiled: raise exc.InvalidRequestError( - "Statement is not a compiled " - "expression construct.") + "Statement is not a compiled " + "expression construct.") elif not self.context.isupdate: raise exc.InvalidRequestError( - "Statement is not an update() " - "expression construct.") + "Statement is not an update() " + "expression construct.") elif self.context.executemany: return self.context.compiled_parameters else: @@ -637,12 +634,12 @@ class ResultProxy(object): """ if not self.context.compiled: raise exc.InvalidRequestError( - "Statement is not a compiled " - "expression construct.") + "Statement is not a compiled " + "expression construct.") elif not self.context.isinsert: raise exc.InvalidRequestError( - "Statement is not an insert() " - "expression construct.") + "Statement is not an insert() " + "expression construct.") elif self.context.executemany: return self.context.compiled_parameters else: @@ -690,12 +687,12 @@ class ResultProxy(object): if not self.context.compiled: raise exc.InvalidRequestError( - "Statement is not a compiled " - "expression construct.") + "Statement is not a compiled " + "expression construct.") elif not self.context.isinsert and not self.context.isupdate: raise exc.InvalidRequestError( - "Statement is not an insert() or update() " - "expression construct.") + "Statement is not an insert() or update() " + "expression construct.") return self.context.postfetch_cols def prefetch_cols(self): @@ -712,12 +709,12 @@ class ResultProxy(object): if not self.context.compiled: raise exc.InvalidRequestError( - "Statement is not a compiled " - "expression construct.") + "Statement is not a compiled " + "expression construct.") elif not self.context.isinsert and not self.context.isupdate: raise exc.InvalidRequestError( - "Statement is not an insert() or update() " - "expression construct.") + "Statement is not an insert() or update() " + "expression construct.") return self.context.prefetch_cols def supports_sane_rowcount(self): @@ -762,8 +759,8 @@ class ResultProxy(object): def _non_result(self): if self._metadata is None: raise exc.ResourceClosedError( - "This result object does not return rows. " - "It has been closed automatically.", + "This result object does not return rows. " + "It has been closed automatically.", ) else: raise exc.ResourceClosedError("This result object is closed.") @@ -793,8 +790,8 @@ class ResultProxy(object): return l except Exception as e: self.connection._handle_dbapi_exception( - e, None, None, - self.cursor, self.context) + e, None, None, + self.cursor, self.context) def fetchmany(self, size=None): """Fetch many rows, just like DB-API @@ -812,8 +809,8 @@ class ResultProxy(object): return l except Exception as e: self.connection._handle_dbapi_exception( - e, None, None, - self.cursor, self.context) + e, None, None, + self.cursor, self.context) def fetchone(self): """Fetch one row, just like DB-API ``cursor.fetchone()``. @@ -831,8 +828,8 @@ class ResultProxy(object): return None except Exception as e: self.connection._handle_dbapi_exception( - e, None, None, - self.cursor, self.context) + e, None, None, + self.cursor, self.context) def first(self): """Fetch the first row and then close the result set unconditionally. @@ -847,8 +844,8 @@ class ResultProxy(object): row = self._fetchone_impl() except Exception as e: self.connection._handle_dbapi_exception( - e, None, None, - self.cursor, self.context) + e, None, None, + self.cursor, self.context) try: if row is not None: @@ -945,6 +942,7 @@ class FullyBufferedResultProxy(ResultProxy): such as MSSQL INSERT...OUTPUT after an autocommit. """ + def _init_metadata(self): super(FullyBufferedResultProxy, self)._init_metadata() self.__rowbuffer = self._buffer_rows() |
