Проблема здесь
if sql.fetchone() is not None:
pref = sql.fetchone()
вызов fetchone() полностью выбирает данные из курсора, в результате последующий вызов fetchone() возвращает null
Нужно сделать fetch в переменную, которую уже потом использовать:
pref = sql.fetchone()
if pref is not None:
# использовать уже pref напрямую, а не sql.fetchone()
P.S. хотя я наверное не совсем понял проблему, похоже изначально данные даже не выбираются, так что проблема еще в чем-то. Но даже после этого, указанное выше надо исправить, иначе тоже данные не выдаст (но уже по указанной причине).