Обработка запроса в 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.
Замените:
cursor.execute(f"SELECT tema FROM client_tema WHERE tema = {people_tema}")На
cursor.execute(f"SELECT tema FROM client_tema WHERE tema = ?", (people_tema,))Замените:
cursor.execute("INSERT INTO client_tema VALUES(?);", users_tema)На
cursor.execute("INSERT INTO client_tema (tema) VALUES (?);", (users_tema,))