Не понимаю как из базы данных передать данные в профиль пользователя telegram bot python

я хотел бы сделать то что в заголовке вопроса, но вот в чём подвох допустим: я создаю базу данных, хочу записать туда данные побед пользователя но не понимаю как это сделать, я хочу установить пользователю число побед в его профиле телеграмм бота, только как это сделать? Через функцию add_user(0, "Владимир", 1, 2) И это должно записаться в бд и у пользователя в профиле должна быть информация которою я ввёл в add_user после 2 аргумента

conn = sqlite3.connect('DataAccounts.db', check_same_thread = False)
cursor = conn.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS stats (
    user_id INT PRIMARY KEY,
    user_name TEXT,
    survived INT,
    infected INT
)""")
conn.commit()

def add_user(user_id: int, user_name: str, survived: int, infected: int):
    try:
        cursor.execute(f"""UPDATE stats SET survived = ?, infected = ? WHERE user_id = ?""", (survived, infected, user_id))
        conn.commit()
    except sqlite3.Error as error:
        print(error)

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

Автор решения: Незнаю Фамилию

Итак, функция add_user не добавляет значение в дб а пытается обновить то, чего не существует. Может быть пригодятся мои давние наработки(код подправлен под вашу таблицу)

class SQLighter:

def __init__(self, database):
    """Подключаемся к БД и сохраняем курсор соединения"""
    self.connection = sqlite3.connect(database, check_same_thread = False)
    self.cursor = self.connection.cursor()
def add_user(self, id,name,survived,infected):
    """Добавляем значение"""
    with self.connection:
        return self.cursor.execute("INSERT INTO `stats` (user_id, user_name, survived, infected) VALUES(?,?,?,?)", (id,name,survived,infected))
def get_nick(self, id):
    '''Эта функция позволяет извлекать нужное значение(в данном случае id) из таблицы stats'''
    with self.connection:
        return self.cursor.execute("SELECT user_id FROM stats WHERE id = ?", (id,)).fetchall()
def set_fast(self, id):
    '''Эта функция позволяет устанавливать значение исходя из параметра id'''
    with self.connection:
        return self.cursor.execute("UPDATE stats SET infected=X WHERE id=? ", (id))
def close(self):
    """Закрываем соединение с БД"""
    self.connection.close()
→ Ссылка
Автор решения: Матвей Васильев

Вы обновляете данные а не добавляете Ниже приведен пример добавления данных и вывод их в сообщении для пользователя

conn = sqlite3.connect('DataAccounts.db', check_same_thread = False)
cursor = conn.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS stats (
    user_id INT PRIMARY KEY,
    user_name TEXT,
    survived INT,
    infected INT
)""")
conn.commit()

def add_user(user_id: int, user_name: str, survived: int, infected: int):
    try:
        cursor.execute("""INSERT INTO stats (user_id, user_name, survived, infected) 
                                     VALUES (?, ?, ?, ?)""", 
                                            (user_id, user_name, survived, infected))
        conn.commit()
    except sqlite3.Error as error:
        print(error)

@bot.message_handler(commands=['start']
def name(message):
    user_id = message.from_user.id
    user_name = message.from_user.first_name
    survived = 10
    infected = 0
    add_user(user_id=user_id, user_name=user_name, survived=survived, infected=infected)
    for infected, survived, user_name in sql.execute(
        f"SELECT user_name, survived, infected FROM stats WHERE user_id ={user_id}"):
        bot.send_message(message.chat.id,
            f'{user_name[0]\nСтатистика:\nВыжевшие: {survived[0]}\nЗаражение: {infected[0]}') 

Результат: Игрок Статистика: Выжившие: 10 Заражение: 0

→ Ссылка