Обработка запроса в SQLITE3 и telebot

Есть кусок кода, который создает новую таблицу в бд, бот в ответ на сообщение запроса добавления новой темы выводит текст "Введите вашу тему:", и следующее сообщение, которое напишет пользователь должен проверить на существование, если существует то вывести сообщение, если нет, то занести в бд, но он этого не делает. Ошибок никаких не выдает. Ощущение что он просто не видит чего-то. Таблицу создает, с этим все нормально, но не заносит новую тему

 if(message.text == "Задать новую тему"):
    cursor.execute("""CREATE TABLE IF NOT EXISTS client_tema(
    tema TEXT
    )""")
    connect.commit()
    bot.send_message(message.chat.id, "Введите новую тему:")



    # Проверка на существования темы в бд
    @bot.message_handler(content_types=["text"])
    def newtema(message):
        people_tema = message.text
        cursor.execute(f"SELECT tema FROM client_tema WHERE tema = {people_tema}")
        data = cursor.fetchone()
        if data is None:
            # Добавление темы в поля
            users_tema = message.text
            cursor.execute("INSERT INTO client_tema VALUES(?);", users_tema)
            connect.commit()
            bot.send_message(message.chat.id, "Добавлена новая тема")
        else:
            bot.send_message(message.chat.id, "Такая тема уже существует")
            pass

Ответы (1 шт):

Автор решения: gil9red

Заметил некоторые проблемы с работой драйвером SQL.

  1. Замените:

    cursor.execute(f"SELECT tema FROM client_tema WHERE tema = {people_tema}")
    

    На

    cursor.execute(f"SELECT tema FROM client_tema WHERE tema = ?", (people_tema,))
    
  2. Замените:

    cursor.execute("INSERT INTO client_tema VALUES(?);", users_tema)
    

    На

    cursor.execute("INSERT INTO client_tema (tema) VALUES (?);", (users_tema,))
    
→ Ссылка