@XWR

Ошибка: sqlite3.OperationalError: no such column как починить?

Код:
import sqlite3

connect = sqlite3.connect("lun_db.db")
cursor = connect.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS lun_db(
    user_id INTEGER,
    ochki INTEGER,
    user_name TEXT
)
""")
connect.commit()

userid = 111
username = "ppppp"
cursor.execute(f"SELECT user_id FROM lun_db WHERE user_id = '{userid}'")
if cursor.fetchone() is None:
    cursor.execute("INSERT INTO lun_db VALUES(?, ?, ?);", (userid, username ,0))
    connect.commit()

 cursor.execute(f'UPDATE lun_db SET user_name = {username} WHERE user_id = "{userid}"')
 connect.commit()


Ошибка:
File "C:\lun_bot\test_ckay_aiogram.py", line 157, in echo_message
    cursor.execute(f'UPDATE lun_db SET user_name = {username} WHERE user_id = "{userid}"')
sqlite3.OperationalError: no such column: star

Почему не работает?
Столбец user_name есть, но не работает...
Помогите пожалуйста
  • Вопрос задан
  • 11934 просмотра
Решения вопроса 1
ErVinTract
@ErVinTract
Жизнерадостный человек
Выходит это потому что у тебя "username" в Insert не обёрнут кавычками да и добавление юзера тоже не верно у тебя в таблице "INTEGER, INTEGER, TEXT", а ты заносишь как "INTEGER, TEXT, INTEGER" Вот норм код:

cursor.execute(f"SELECT user_id FROM lun_db WHERE user_id = '{userid}'")
if cursor.fetchone() is None:
    cursor.execute("INSERT INTO lun_db VALUES(?, ?, ?);", (userid,  0, f"{username}"))
    connect.commit()


UPDATE:
Так же и в UPDATE
cursor.execute('UPDATE lun_db SET user_name = ? WHERE user_id = ?', (f"{username}", userid))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
Столбец user_name есть, но не работает

Он то есть, но вам программа пишет нет колонки star
Учитесь правильно составлять SQL запросы, не используйте это f-форматирование

cursor.execute('UPDATE lun_db SET user_name = ? WHERE user_id = ?', (username, userid))


На первом же экране объясняют как использовать переменные
https://docs.python.org/3/library/sqlite3.html
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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