docs: def _get_query(self, callback, schema, query=None, *args, **kwargs):
          """this is just a common wrapper around all the get queries since they are
          all really similar in how they execute"""
          if not query: query = Query()
  
          ret = None
          with self.connection(**kwargs) as connection:
              kwargs['connection'] = connection
              try:
                  if connection.in_transaction():
                      # we wrap SELECT queries in a transaction if we are in a transaction because
                      # it could cause data loss if it failed by causing the db to discard
                      # anything in the current transaction if the query isn't wrapped,
                      # go ahead, ask me how I know this
                      with self.transaction(**kwargs):
                          ret = callback(schema, query, *args, **kwargs)
  
                  else:
                      ret = callback(schema, query, *args, **kwargs)
  
              except Exception as e:
                  exc_info = sys.exc_info()
                  if self.handle_error(schema, e, **kwargs):
                      ret = callback(schema, query, *args, **kwargs)
                  else:
                      self.raise_error(e, exc_info)
  
          return ret