Запрос в sopdsdb.py в методе getdbinfo содержит ошибку. По умолчанию union содержит директиву distinct и при пустой БД, созданой Вашими скриптами, запрос возвращает две строчки вместо трех. Я обычно в запросы такого вида добавляю некие константы flag уникальные для каждой ветки юнион. Вторая ошибка в запросе состоит в том, что при отсутствии явной сортировки нельзя утверждать в каком именно порядке SQL сервер вернет строки ответа.
select 1 Flag, count(*) from books where avail!=0
union all
select 2 Flag, count(*) from authors
union all
select 3 Flag, count(*) from catalogs
order by Flag;