442 except (self.OperationalError, self.InterfaceError): |
442 except (self.OperationalError, self.InterfaceError): |
443 # FIXME: better detection of deconnection pb |
443 # FIXME: better detection of deconnection pb |
444 self.warning("trying to reconnect") |
444 self.warning("trying to reconnect") |
445 session.pool.reconnect(self) |
445 session.pool.reconnect(self) |
446 cursor = self.doexec(session, sql, args) |
446 cursor = self.doexec(session, sql, args) |
447 results = self.process_result(cursor, cbs) |
447 except (self.DbapiError,), exc: |
|
448 # We get this one with pyodbc and SQL Server when connection was reset |
|
449 if exc.args[0] == '08S01': |
|
450 self.warning("trying to reconnect") |
|
451 session.pool.reconnect(self) |
|
452 cursor = self.doexec(session, sql, args) |
|
453 else: |
|
454 raise |
|
455 results = self.process_result(cursor, cbs, session=session) |
448 assert dbg_results(results) |
456 assert dbg_results(results) |
449 return results |
457 return results |
450 |
458 |
451 def flying_insert(self, table, session, union, args=None, varmap=None): |
459 def flying_insert(self, table, session, union, args=None, varmap=None): |
452 """similar as .syntax_tree_search, but inserts data in the |
460 """similar as .syntax_tree_search, but inserts data in the |