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?
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