summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sqlalchemy/exc.py7
-rw-r--r--test/engine/test_execute.py15
2 files changed, 16 insertions, 6 deletions
diff --git a/lib/sqlalchemy/exc.py b/lib/sqlalchemy/exc.py
index 4ce0bfe7f..4f776b837 100644
--- a/lib/sqlalchemy/exc.py
+++ b/lib/sqlalchemy/exc.py
@@ -102,6 +102,9 @@ class NoReferencedTableError(NoReferenceError):
NoReferenceError.__init__(self, message)
self.table_name = tname
+ def __reduce__(self):
+ return self.__class__, (self.args[0], self.table_name)
+
class NoReferencedColumnError(NoReferenceError):
"""Raised by ``ForeignKey`` when the referred ``Column`` cannot be located."""
@@ -110,6 +113,10 @@ class NoReferencedColumnError(NoReferenceError):
self.table_name = tname
self.column_name = cname
+ def __reduce__(self):
+ return self.__class__, (self.args[0], self.table_name,
+ self.column_name)
+
class NoSuchTableError(InvalidRequestError):
"""Table does not exist or is not visible to a connection."""
diff --git a/test/engine/test_execute.py b/test/engine/test_execute.py
index 361c38c2f..44e44982f 100644
--- a/test/engine/test_execute.py
+++ b/test/engine/test_execute.py
@@ -219,16 +219,19 @@ class ExecuteTest(fixtures.TestBase):
tsa.exc.InterfaceError("select * from table",
{"foo":"bar"},
orig),
+ tsa.exc.NoReferencedTableError("message", "tname"),
+ tsa.exc.NoReferencedColumnError("message", "tname", "cname")
):
for loads, dumps in picklers():
repickled = loads(dumps(sa_exc))
eq_(repickled.args[0], sa_exc.args[0])
- eq_(repickled.params, {"foo":"bar"})
- eq_(repickled.statement, sa_exc.statement)
- if hasattr(sa_exc, "connection_invalidated"):
- eq_(repickled.connection_invalidated,
- sa_exc.connection_invalidated)
- eq_(repickled.orig.args[0], orig.args[0])
+ if isinstance(sa_exc, tsa.exc.StatementError):
+ eq_(repickled.params, {"foo":"bar"})
+ eq_(repickled.statement, sa_exc.statement)
+ if hasattr(sa_exc, "connection_invalidated"):
+ eq_(repickled.connection_invalidated,
+ sa_exc.connection_invalidated)
+ eq_(repickled.orig.args[0], orig.args[0])
def test_dont_wrap_mixin(self):
class MyException(Exception, tsa.exc.DontWrapMixin):