Потому что если просто написанть название переменной в SQL запросе, sqlite не догадается магически что это именно переменная, и что её надо взять именно из этого места скрипта. И слава богу что так.
Для решения таких задач есть
placeholders, это просто и надёжно. На странице по ссылке почти в самом начале есть пример, начинается с фразы "# Do this instead". Почитай и сделай по аналогии.
Если коротко, вместо каждой подставляемой переменной в запросе ставишь ?, а после текста запроса пишешь кортеж, где перечисляешь сами эти переменные - строго в том же порядке.