summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine/base.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-12-18 06:13:42 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-12-18 06:13:42 +0000
commitdf68f307775a545e067f3a8a3f6bcc9e1f11d9b2 (patch)
treea0405894532079a4fdda9d1a7a840ce212b8c6be /lib/sqlalchemy/engine/base.py
parentfaf4aca165cef9bbd8d90b7a4f4ccf2b3d986ea1 (diff)
downloadsqlalchemy-df68f307775a545e067f3a8a3f6bcc9e1f11d9b2.tar.gz
get most oracle tests in sql working again....
Diffstat (limited to 'lib/sqlalchemy/engine/base.py')
-rw-r--r--lib/sqlalchemy/engine/base.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py
index 3219e6c5b..783d60cf4 100644
--- a/lib/sqlalchemy/engine/base.py
+++ b/lib/sqlalchemy/engine/base.py
@@ -1656,8 +1656,17 @@ class BufferedColumnResultProxy(ResultProxy):
_process_row = BufferedColumnRow
def _get_col(self, row, key):
- rec = self._key_cache[key]
- return row[rec[2]]
+ try:
+ rec = self._key_cache[key]
+ return row[rec[2]]
+ except TypeError:
+ # the 'slice' use case is very infrequent,
+ # so we use an exception catch to reduce conditionals in _get_col
+ if isinstance(key, slice):
+ indices = key.indices(len(row))
+ return tuple([self._get_col(row, i) for i in xrange(*indices)])
+ else:
+ raise
def fetchall(self):
l = []