С чего ты взял, что возвращаемое значение второй раз будет не None? Ты проверял, что данные заносятся?
Собственно, в том и ошибка - у тебя уже есть запись с таким userid, второй раз вставить нельзя.
А твоя GetInfo() не работает. Почему? Внезапно, в SQL сравнение - это =, а не ==. А ошибку тебе не пишет, потому что ты сделал except: pass. За такую практику вообще надо бить по пальцам линейкой, надеюсь, ты теперь понял почему.
Ну и до кучи, если хочешь проверить существование, то лучше сделать запрос вида
SELECT COUNT(*) FROM main WHERE user_id = ?
или
SELECT EXISTS(SELECT * FROM main WHERE user_id = ?)
. Эти запросы гарантированно вернут одну строку с одним значением, 0 или 1. 0 - строка не существует, 1 - строка существует.