code: def run(wrapped):
      
  
      @wraps(wrapped)
      def _run(self, query, bindings=None, *args, **kwargs):
          self._reconnect_if_missing_connection()
  
          start = time.time()
          try:
              result = wrapped(self, query, bindings, *args, **kwargs)
          except Exception as e:
              result = self._try_again_if_caused_by_lost_connection(
                  e, query, bindings, wrapped
              )
  
          t = self._get_elapsed_time(start)
          self.log_query(query, bindings, t)
  
          return result
  
      return _run
docs: Special decorator encapsulating query method.