@Nekech

Как убрать ошибку sqlite3.OperationalError: no such column: balance?

Пишу бота для телеграмм канала
Нужно было добавить баланс
Стал делать через SQLite
В базе данных есть столбец balance, но при запуске все равно выдает ошибку
sqlite3.OperationalError: no such column: balance
Что не так?
Колонка баланса есть в самой таблице
Ниже код базы данных
import sqlite3
from typing import Union

def create_sqlite_db_conn(db_file: str) -> sqlite3.Connection:
    return sqlite3.connect(db_file)


def user_exists(cursor: sqlite3.Cursor, user_id: int) -> bool:
    result = cursor.execute(
        'SELECT * FROM users WHERE user_id = ?',
        (user_id, )
    ).fetchall()
    print(result)
    return len(result) > 0


def add_user(cursor: sqlite3.Cursor, user_id: int, referrer_id: Union[int, None] = None):
    cursor.execute(
        'INSERT INTO users (user_id, referrer_id) VALUES (?,?)',
        (user_id, referrer_id, )
    )


def count_referals(cursor: sqlite3.Cursor, user_id: int) -> int:
    return cursor.execute(
        'SELECT COUNT(id) as count FROM users WHERE referrer_id = ?',
        (user_id,)
    ).fetchone()[0]


def add_balance(cursor: sqlite3.Cursor, user_id: int, amount_rub: float):
    curr_balance_rub = cursor.execute(
        'SELECT balance FROM users WHERE user_id = ?',
        (user_id, )
    ).fetchone()[0]
    new_balance = curr_balance_rub + amount_rub
    cursor.execute(
        'UPDATE users SET balance = ? WHERE user_id = ?',
        (new_balance, user_id, )
    )


def user_balance(cursor: sqlite3.Cursor, user_id: int) -> float:
    curr_balance_rub = cursor.execute(
        'SELECT balance FROM users WHERE user_id = ?',
        (user_id, )
    ).fetchone()[0]
    return curr_balance_rub
  • Вопрос задан
  • 167 просмотров
Пригласить эксперта
Ответы на вопрос 1
@mr_diablol
У вас столбца "balance" нет в таблице "users".

cursor.execute('ALTER TABLE users ADD COLUMN balance REAL DEFAULT 0')
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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