@wolfangee

Как исправить ошибку?

Делаю бота для телеграма и использую sql, когда хочу добавить данные в таблицу, то почему то вылезает такая ошибка:
sqlite3.OperationalError: table users has no column named liter

вот строчка в которой вылезает ошибка:
cur.execute(f'INSERT INTO users (id, class, liter) VALUES ({id_user}, {class_user}, {litera_user})')


p.s. вот как создается бд в коде:
cur.execute("CREATE TABLE IF NOT EXISTS users (id INT, class INT, liter TEXT)")
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 4
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
CREATE TABLE IF NOT EXISTS users (id INT, class INT, liter TEXT)
А если она уже существует? Колонка liter в ней есть?
Ответ написан
@Zzzz9
cur.execute(f"INSERT INTO users (id, class, liter) VALUES (?, ?, ?)",(id_user,class_user,litera_user))
Ответ написан
Комментировать
@Danilka2400
Попробуйте сделать кавычки"{litera_user}" , так как это текст и commit()
Ответ написан
Комментировать
Vapaamies
@Vapaamies
Разработчик будущей ОС для ПК размером 250 МБ
Вижу, что в коде создается не БД, а таблица. Если при предыдущих тестовых запусках программы таблица создана без поля liter, она не пересоздается. Нужно разбить задачу на две:
  • Создание базы и пустых таблиц с нуля при при установке.
  • Миграция на новую версию существующей базы (гуглим и читаем теорию про миграции и инструменты вроде Liquibase).

Для визуального просмотра и редактирования SQLite есть программы типа SQLiteSpy.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы