parameters = {}
def check_unicode(test):
- cursor = connection.connection.cursor()
+ statement = cast_to(expression.select([test]).compile(dialect=self))
try:
- try:
- statement = cast_to(expression.select([test]).compile(dialect=self))
- connection._cursor_execute(cursor, statement, parameters)
- row = cursor.fetchone()
-
- return isinstance(row[0], util.text_type)
- except exc.DBAPIError as de:
- util.warn("Exception attempting to "
- "detect unicode returns: %r" % de)
- return False
- finally:
+ cursor = connection.connection.cursor()
+ connection._cursor_execute(cursor, statement, parameters)
+ row = cursor.fetchone()
cursor.close()
+ except exc.DBAPIError as de:
+ # note that _cursor_execute() will have closed the cursor
+ # if an exception is thrown.
+ util.warn("Exception attempting to "
+ "detect unicode returns: %r" % de)
+ return False
+ else:
+ return isinstance(row[0], util.text_type)
tests = [
# detect plain VARCHAR
# is collecting in finalize_fairy, deadlock.
# not sure if this should be if pypy/jython only.
# note that firebird/fdb definitely needs this though
- for conn, rec in self.conns:
+ for conn, rec in list(self.conns):
self._safe(conn.rollback)
def _stop_test_ctx(self):
def _stop_test_ctx_aggressive(self):
self.close_all()
- for conn, rec in self.conns:
+ for conn, rec in list(self.conns):
self._safe(conn.close)
rec.connection = None