code: def fetch_all_objects_from_db_where(self,
                                          cls: Type[T],
                                          table: str,
                                          fieldlist: Sequence[str],
                                          construct_with_pk: bool,
                                          wheredict: Optional[Dict[str, Any]],
                                          *args) -> List[T]:
          
          sql = (
              "SELECT " + ",".join([self.delimit(x) for x in fieldlist]) +
              " FROM " + self.delimit(table)
          )
          whereargs = []
          if wheredict is not None:
              sql += " WHERE " + " AND ".join([
                  self.delimit(k) + "=?"
                  for k in wheredict.keys()
              ])
              whereargs = wheredict.values()
          rows = self.fetchall(sql, *whereargs)
          objects = []
          for row in rows:
              objects.append(
                  create_object_from_list(cls, fieldlist, row, *args,
                                          construct_with_pk=construct_with_pk))
          return objects
docs: Fetches all objects from a table, given a set of WHERE criteria
          (ANDed), returning an array of objects of class cls.
          As usual here, the first field in the fieldlist must be the PK.