summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine/result.py
diff options
context:
space:
mode:
authorLele Gaifax <lele@metapensiero.it>2016-01-28 09:04:40 +0100
committerLele Gaifax <lele@metapensiero.it>2016-01-28 09:04:40 +0100
commitf84ef1f83cc64a5ea3a910b8d1bdf00b05e9ceab (patch)
tree88ea72eea39fd076dc730a304a9ec9823dfb6aa3 /lib/sqlalchemy/engine/result.py
parent086ad9ce6413e73f93506523d4eb8e23710443dc (diff)
downloadsqlalchemy-pr/231.tar.gz
- properly handle negative indexes in RowProxy.__getitem__()pr/231
Diffstat (limited to 'lib/sqlalchemy/engine/result.py')
-rw-r--r--lib/sqlalchemy/engine/result.py9
1 files changed, 8 insertions, 1 deletions
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