code: def fetchall_as_dictlist(self, sql: str, *args) -> List[Dict[str, Any]]:
          
          self.ensure_db_open()
          cursor = self.db.cursor()
          self.db_exec_with_cursor(cursor, sql, *args)
          try:
              rows = cursor.fetchall()
              fieldnames = [i[0] for i in cursor.description]
              dictlist = []
              for r in rows:
                  dictlist.append(dict(zip(fieldnames, r)))
              return dictlist
          except:  # nopep8
              log.exception("fetchall_as_dictlist: SQL was: " + sql)
              raise
docs: Executes SQL; returns list of dictionaries, where each dict contains
          fieldname/value pairs.