Detect whether to fetch from psycopg2 cursor or not?
Look at this attribute:
cur.description
After you have executed your query, it will be set to None if no rows were returned, or will contain data otherwise - for example:
(Column(name='id', type_code=20, display_size=None, internal_size=8, precision=None, scale=None, null_ok=None),)
Catching exceptions is not ideal because there may be a case where you're overriding a genuine exception.
Check whether cursor.pgresult_ptr is None or not.
cursor.execute(sql)
if cursor.pgresult_ptr is not None:
cursor.fetchall()