diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index cbff0ef0d1..d4d512034e 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -244,9 +244,9 @@ class SessionTransaction(object): "The transaction is inactive due to a rollback in a " "subtransaction. Issue rollback() to cancel the transaction.") - def _assert_is_open(self): + def _assert_is_open(self, error_msg="The transaction is closed"): if self.session is None: - raise sa_exc.InvalidRequestError("The transaction is closed") + raise sa_exc.InvalidRequestError(error_msg) @property def _is_transaction_boundary(self): @@ -438,6 +438,7 @@ class SessionTransaction(object): return self def __exit__(self, type, value, traceback): + self._assert_is_open("Cannot end transaction context. The transaction was closed from within the context") if self.session.transaction is None: return if type is None: