Почему не записываются данные в бд?
Мужчина, вы издеваетесь? 
Я вам уже раз пять повторил ответ на этот вопрос:

имена колонок и таблиц нельзя брать в одинарные кавычки. Потому что в одинарных кавычках пишутся строки. 
И если даже иногда sqlite и смотрит сквозь пальцы на такую ошибку (когда она может понять по контексту, что имеется в виду), это не значит, что так будет везти всегда.
Строка 'money'  никогда не будет равна числу.
def user_exists(self, user_id):
    with self.connection:
        ...
def add_user(self, user_id):
    with self.connection:

По выходу из блока with соединение закроется. Второй блок with его уже не переоткроет.
В таких ситуациях блок with использовать не надо.