q.execute("update config set bitcoin = " + str( new_bitcoin ) + " where id = 1")
За такое надо бить по рукам. Железной линейкой. Поясню почему:
если new_bitcoin присвоить число 1234 или строку "1234", то получим запрос
update config set bitcoin = 1234 where id = 1
Этот запрос синтаксически корректен с точки зрения языка SQL.
А вот если new_bitcoin присвоить строку "foobar", получим запрос
update config set bitcoin = foobar where id = 1
С точки зрения SQL это обращение к столбцу foobar. Которого, разумеется, нету.
А теперь, внимание, вопрос: какого огурца ты не ознакомился с азами использования СУБД, а именно с синтаксисом подстановки значения?
Читай
тут, начиная со слов "Instead, use the DB-API’s parameter substitution". Осознай, и больше так не делай.
Ну и до кучи: что будет, если в bitcoin будет строка вида "0; --"?
update config set bitcoin = 0; -- where id = 1
Всё, что после "--" это комментарий, и будет проигноировано. Т.е. запрос перезапишет весь столбец bitcoin нулями.