@Tayrus0

Почему я получаю ошибку sqlite3.OperationalError: near "любое слово": syntax error?

Вот функция:

def write_comment(message):
        conn = sqlite3.connect("m.db")

        cursorObj = conn.cursor()
        cursorObj.execute(
            f'SELECT comment_text FROM settings WHERE id = {message.chat.id}')

        rows = cursorObj.fetchall()
        if len(rows) == 0:
            cursorObj.execute(
                'INSERT INTO settings(id,comment_text) VALUES(?,?)', (message.chat.id, message.text))
            conn.commit()
        cursorObj.execute(
            f'UPDATE settings SET comment_text = {message.text} WHERE id = {message.chat.id}')

        conn.commit()
        bot.send_message(
            message.chat.id, "✔️ Значение записано")


Таблицу создал так:

cursorObj.execute(
            "CREATE TABLE IF NOT EXISTS settings(comment_text text, post_text text, wall_user_id integer, id integer)")


Когда я ввожу текст в бота, то я получаю:
File "run_server.py", line 136, in write_comment
    f'UPDATE settings SET comment_text = {message.text} WHERE id = {message.chat.id}')
sqlite3.OperationalError: no such column: tertert


Но если я ввожу число, то ошибки нету, почему так?
  • Вопрос задан
  • 4923 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Потому что не стоит использовать интерполяцию строк для формирования SQL-запросов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы