@Doplis01

Не работает функция, что делать?

Я делаю тг бота на aiogram, и хочу сделать так что б когда пользователь нажимал /start то его юзер нейм записывался в таблицу, но почему-то не работает, вот код который написал

async  def db_start():
    cur.execute("CREATE TABLE IF NOT EXISTS accounts ("
                "id INTEGER PRIMARY KEY AUTOINCREMENT, "
                "acc_id INTEGER, "
                "users_name TEXT)")


Создаю таблицу

async  def start_user_name_db(user_name):
    us_name = cur.execute("SELECT * FROM accounts WHERE users_name == {un}".format(un=user_name)).fetchone()
    if not us_name:
        cur.execute("INSERT INTO accounts (users_name) VALUES ({un})".format(un=user_name))
        db.commit()


Вот после этого момента мне пишется

sqlite3.OperationalError: no such column: users_name

И вот, а дальше я хз
и ещё мне это id INTEGER PRIMARY KEY AUTOINCREMENT в таблицу тоже не добавляется
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Значит нет такого столбца, как и говорит ошибка.

Почему нет? Наверное под этим же именем уже существует другая БД, где такого столбца нет. Удалить старый файл и заново код запустить, с исправлениями выше, чтоб все операции были не через format, f строки, конкатенацию и что там еще можно придумать, а через ?, как написано в доке
https://docs.python.org/3/library/sqlite3.html#how...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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