From fdc4725ca37e811e928cacfd1333e492b1b193e8 Mon Sep 17 00:00:00 2001 From: CC Date: Tue, 1 Sep 2026 23:04:24 +0100 Subject: [PATCH] genre counts in SQL --- main.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/main.py b/main.py index 42dfdcb..9a5761b 100644 --- a/main.py +++ b/main.py @@ -28,14 +28,18 @@ def fetch_titles_and_genres(engine: Engine) -> pd.DataFrame: query = """SELECT title, genres FROM audiobookshelf.ao3;""" return run_query(engine, query) -def count_genre_occurrences(data: pd.DataFrame, column: str = "genres") -> pd.Series: - """Count how many times each genre appears across all titles.""" - return data.explode(column)[column].value_counts() +def count_genre_occurrences(engine: Engine) -> pd.DataFrame: + """Count how many times each genre appears across all titles in SQL before returning.""" + query = """SELECT genre, COUNT(*) + FROM audiobookshelf.ao3, unnest(genres) AS genre + GROUP BY genre + ORDER BY COUNT(*) DESC;""" + return run_query(engine, query) def main(): engine = get_engine() - data = fetch_titles_and_genres(engine) - genre_counts = count_genre_occurrences(data) + #data = fetch_titles_and_genres(engine) + genre_counts = count_genre_occurrences(engine) print(genre_counts) # print(data.head())