Существует ряд проблем с вашим кодом, но самая основная из них заключается в том, что ваш последний оператор SQL не ставит кавычки вокруг значения category_name, как требуется для строк в SQL (и большинстве других языков).
То, что вы отправляете в SQLite:
select id,title, text,pub_date,category from entries where category = music
и должно быть:
select id,title, text,pub_date,category from entries where category = 'music'
Однако вы никогда не должны строить операторы SQL путем объединения строк вместе, так как это подвергает васвероятность того, что подлый человек (или бот) поместит что-то в одну из этих строк, которая уничтожит вашу базу данных.
Вместо этого вам следует сделать следующее:
cur = g.db.execute(
'select id,title, text,pub_date,category from entries where category = ?',
[category_name])
, которая называется параметризованный запрос .В этом случае база данных обеспечит правильную обработку category_name как части строковых данных, а не (потенциально) части оператора SQL.