summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine
diff options
context:
space:
mode:
authorJason Kirtland <jek@discorporate.us>2007-08-11 23:15:32 +0000
committerJason Kirtland <jek@discorporate.us>2007-08-11 23:15:32 +0000
commit2d8b5bb4f36e5624f25b170391fe42d3bfbeb623 (patch)
treea6267f998e2c54ef3d1405d23bd3a6a1618280ef /lib/sqlalchemy/engine
parent2fbeeb125c83664d684cfabdfa8548d518e758a6 (diff)
downloadsqlalchemy-2d8b5bb4f36e5624f25b170391fe42d3bfbeb623.tar.gz
Added an exception hierarchy shadowing DB-API exc types
No more generic SQLErrors wrappers- the shadow type matching the DB-API error is raised. [ticket:706] SQLError is now (also) DBAPIError. DBAPIError and subtype constructors will refuse to wrap a SystemExit or KeyboardInterrupt, returningthe original interrupt exception instead of a new instance. [ticket:689] Added a passthroughs for SE/KI exceptions in a couple except-and-discard situations
Diffstat (limited to 'lib/sqlalchemy/engine')
-rw-r--r--lib/sqlalchemy/engine/base.py3
-rw-r--r--lib/sqlalchemy/engine/default.py3
-rw-r--r--lib/sqlalchemy/engine/strategies.py2
3 files changed, 5 insertions, 3 deletions
diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py
index 78eb0922e..a4e41e996 100644
--- a/lib/sqlalchemy/engine/base.py
+++ b/lib/sqlalchemy/engine/base.py
@@ -1183,7 +1183,8 @@ class ResultProxy(object):
rec = (type, type.dialect_impl(self.dialect), i)
if rec[0] is None:
- raise exceptions.DBAPIError("None for metadata " + colname)
+ raise exceptions.InvalidRequestError(
+ "None for metadata " + colname)
if self.__props.setdefault(colname.lower(), rec) is not rec:
self.__props[colname.lower()] = (type, ResultProxy.AmbiguousColumn(colname), 0)
self.__keys.append(colname)
diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py
index a9ee02c1c..f7410bb0f 100644
--- a/lib/sqlalchemy/engine/default.py
+++ b/lib/sqlalchemy/engine/default.py
@@ -136,7 +136,8 @@ class DefaultDialect(base.Dialect):
# to appropriate character upon compilation
self.positional = True
else:
- raise exceptions.DBAPIError("Unsupported paramstyle '%s'" % self._paramstyle)
+ raise exceptions.InvalidRequestError(
+ "Unsupported paramstyle '%s'" % self._paramstyle)
def _get_ischema(self):
if self._ischema is None:
diff --git a/lib/sqlalchemy/engine/strategies.py b/lib/sqlalchemy/engine/strategies.py
index ed9422d15..168a9c4ab 100644
--- a/lib/sqlalchemy/engine/strategies.py
+++ b/lib/sqlalchemy/engine/strategies.py
@@ -71,7 +71,7 @@ class DefaultEngineStrategy(EngineStrategy):
try:
return dbapi.connect(*cargs, **cparams)
except Exception, e:
- raise exceptions.DBAPIError("Connection failed", e)
+ raise exceptions.DBAPIError(None, None, e)
creator = kwargs.pop('creator', connect)
poolclass = (kwargs.pop('poolclass', None) or