Search code examples
pythonmysqlodbcpyodbc

Check if pyodbc connection is open or closed


I often get this error: ProgrammingError: The cursor's connection has been closed.

Is there a way to check whether the connection I am using has been closed before I attempt to execute a query?

I'm thinking of writing a wrapper to execute queries. First it would check whether the connection is closed, if it is, it would reconnect. Is this an advisable way of doing this?


Solution

  • The wrapper is a good idea but I don't know any API to reliably check whether the connection is closed or not.

    So the solution would be something along these lines:

    for retry in range(3):
        try:
            ... execute query ...
            return # Stop on success
        except e:
            if is_connection_broken_error(e):
                 reconnect()
                 continue
            raise
    
    raise # throw if the retry fails too often