cammil cammil - 29 days ago 25
MySQL Question

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?

Answer

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