def gendicts(cursor: Cursor, arraysize: int = 1000) \
        -> Generator[Dict[str, Any], None, None]:
    """
    Generate all rows from a cursor as :class:`OrderedDict` objects.

    Args:
        cursor: the cursor
        arraysize: split fetches into chunks of this many records

    Yields:
        each row, as an :class:`OrderedDict` whose key are column names
        and whose values are the row values
    """
    columns = get_fieldnames_from_cursor(cursor)
    return (
        OrderedDict(zip(columns, row))
        for row in genrows(cursor, arraysize)
    )