"""
return None
+ def reset_isolation_level(self, dbapi_conn):
+ """Given a DBAPI connection, revert its isolation to the default."""
+
+ raise NotImplementedError()
+
+ def set_isolation_level(self, dbapi_conn, level):
+ """Given a DBAPI connection, set its isolation level."""
+
+ raise NotImplementedError()
+
+ def get_isolation_level(self, dbapi_conn):
+ """Given a DBAPI connection, return its isolation level."""
+
+ raise NotImplementedError()
+
class ExecutionContext(object):
"""A messenger object for a Dialect that corresponds to a single
except NotImplementedError:
self.default_schema_name = None
+ try:
+ self.default_isolation_level = \
+ self.get_isolation_level(connection.connection)
+ except NotImplementedError:
+ self.default_isolation_level = None
+
self.returns_unicode_strings = self._check_unicode_returns(connection)
self.do_rollback(connection.connection)
def is_disconnect(self, e):
return False
+ def reset_isolation_level(self, dbapi_conn):
+ self.set_isolation_level(dbapi_conn,
+ self.isolation_level or self.default_isolation_level)
+
+
class DefaultExecutionContext(base.ExecutionContext):
isinsert = False
isolation_level = eng.dialect.get_isolation_level(eng.connect().connection)
eq_(isolation_level, self._default_isolation_level())
+ @testing.requires.isolation_level
+ def test_reset_level(self):
+ eng = create_engine(testing.db.url)
+ conn = eng.connect()
+ eq_(eng.dialect.get_isolation_level(conn.connection), self._default_isolation_level())
+
+ eng.dialect.set_isolation_level(conn.connection, self._non_default_isolation_level())
+ eq_(eng.dialect.get_isolation_level(conn.connection), self._non_default_isolation_level())
+
+ eng.dialect.reset_isolation_level(conn.connection)
+ eq_(eng.dialect.get_isolation_level(conn.connection), self._default_isolation_level())
+
+ conn.close()
+
+ @testing.requires.isolation_level
+ def test_reset_level_with_setting(self):
+ eng = create_engine(testing.db.url, isolation_level=self._non_default_isolation_level())
+ conn = eng.connect()
+ eq_(eng.dialect.get_isolation_level(conn.connection), self._non_default_isolation_level())
+
+ eng.dialect.set_isolation_level(conn.connection, self._default_isolation_level())
+ eq_(eng.dialect.get_isolation_level(conn.connection), self._default_isolation_level())
+
+ eng.dialect.reset_isolation_level(conn.connection)
+ eq_(eng.dialect.get_isolation_level(conn.connection), self._non_default_isolation_level())
+
+ conn.close()
+
+
@testing.requires.isolation_level
def test_invalid_level(self):
eng = create_engine(testing.db.url, isolation_level='FOO')