From f84ef1f83cc64a5ea3a910b8d1bdf00b05e9ceab Mon Sep 17 00:00:00 2001 From: Lele Gaifax Date: Thu, 28 Jan 2016 09:04:40 +0100 Subject: - properly handle negative indexes in RowProxy.__getitem__() --- lib/sqlalchemy/engine/result.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'lib/sqlalchemy/engine') diff --git a/lib/sqlalchemy/engine/result.py b/lib/sqlalchemy/engine/result.py index 39f4fc50c..9208686e1 100644 --- a/lib/sqlalchemy/engine/result.py +++ b/lib/sqlalchemy/engine/result.py @@ -215,10 +215,17 @@ class ResultMetaData(object): self._keymap = {} if not _baserowproxy_usecext: - # keymap indexes by integer index... + # keymap indexes by integer index: this is only used + # in the pure Python BaseRowProxy.__getitem__ + # implementation to avoid an expensive + # isinstance(key, util.int_types) in the most common + # case path self._keymap.update([ (elem[0], (elem[3], elem[4], elem[0])) for elem in raw + ] + [ + (elem[0] - num_ctx_cols, (elem[3], elem[4], elem[0])) + for elem in raw ]) # processors in key order for certain per-row -- cgit v1.2.1