1. Ты получил объект-курсор. У него нет строкового представления, поэтому пр ивыводе он отображается по умолчанию - <Cursor object at адрес-объекта-в-памяти>
Чтобы получить выбранные данные, нужно вызывать методы fetchone() или fetchall().
2. Если ты делаешь запрос к БД, который возвращает данные (неважно какие), получить их придётся как описано выше. Что это за данные - сами строки, какая-то агрегатная функция, или еще что - не важно. Даже если выполнишь запрос вида SELECT 123;
, всё равно результат придётся вытаскивать через fetchone()/fetchall().
3. SUM(id)
вернёт тебе сумму всех идентификаторов строк в таблице, а не количество строк в ней. Используй COUNT(*)
.