Ошибка UNIQUE constraint failed: user.user_id (SQLite)

Пишу бота для телеграма. В процесе дошёл до создания БД. Использую БД (SQLite). Это мой первый опыт работы с БД

Ситуация следующая. Когда пользователь пишет сообщение, бот проверяет есть ли пользователь в БД и если его там нет - вносит его туда. Реализовал следующим образом:

@dp.message_handler()
async def mess_handler(message: types.Message):
    if not db.user_exists(message.from_user.id):
        db.add_user(message.from_user.id)

При первой попытке всё сработало, все аккаунты с которых я тестил бота попали в БД. Консоль никаких ошибок не выдавала. Сегодня начал с проверки совершенно другой функции бота. В код изменений не вносил, но консоль начала выдавать ошибку "UNIQUE constraint failed: user.user_id" и бот отказываеться работать. Участок кода, при исполнении которого выдаёт ошибку:

def add_user(self, user_id):
with self.connection:
    return self.connection.execute("INSERT INTO 'user' ('user_id') VALUES (?)", (user_id,))

Как это можно исправить?


Ответы (1 шт):

Автор решения: Дмитрий

Можно сделать исключение через try и except:

def add_user(self, user_id):
with self.connection:
    try:
     self.connection.execute("INSERT INTO 'user' ('user_id') VALUES (?)", (user_id,))
    except:
        pass
→ Ссылка