Ошибка sqlite python

Везде в гугле описываются разные причины ошибки, я понятия не имею что не так хотя у меня есть точно такой же класс только с другим названием таблицы и не совсем большими отличиями.

Вот весь код файла который вызывает ошибку

Но ошибку вызывает только add_charcard в строке которая начинается с return

Сама ошибка - sqlite3.OperationalError: near "?": syntax error

import sqlite3

class Inv:

    """Инициация класса и подключение к базе данных"""
    def __init__(self, database):
        """Подключаемся к базе данных"""
        self.connection = sqlite3.connect(database)
        self.cursor = self.connection.cursor()

    """Создание инвентаря"""
    def create_inv(self, user_id0):
        with self.connection:
            res0 = self.cursor.execute("INSERT INTO `char cards` (user_id, ernesto, colt, roman, diesel) VALUES (?, 1, 0, 0, 0)", (user_id0,))
            res1 = self.cursor.execute("INSERT INTO `squad cards` (user_id) VALUES (?)", (user_id0,))
            return res0, res1

    """Добавление карты персонажа"""
    def add_charcard(self, name, user_id0):
        with self.connection:
            return self.cursor.execute("UPDATE `char cards` set (?) = (? + 1) WHERE `user_id` = ?", (name, name, user_id0))

    """Добавление карты отряда"""
    def add_squadcard(self, user_id0, name):
        pass

    """Буленовское значение пользователя"""
    def check_userid_bool(self, user_id0):
        with self.connection:
            result = self.cursor.execute("SELECT `user_id` FROM `money` WHERE `user_id` = ?", (user_id0,)).fetchone()
            return bool(len(result))

    """Получение строки с номером юзера"""
    def check_userid_str(self, user_id0):
        with self.connection:
            result = self.cursor.execute("SELECT `user_id` FROM `money` WHERE `user_id` = ?", (user_id0,)).fetchone()
            return str(result)[1:-1]

    """Чтение количества карт"""
    def read_charcards(self, user_id0):
        with self.connection():
            result = self.cursor.execute("SELECT * FROM `char cards` WHERE `user_id` = ?", (user_id0,)).fetchall()
            return result

    def read_squadcards(self, user_id0):
        with self.connection():
            result = self.cursor.execute("SELECT * FROM `squad cards` WHERE `user_id` = ?", (user_id0,)).fetchall()
            return result


    def close(self):
        """Закрываем соединение с БД"""
        self.connection.close()

Мне нужно сделать добавление 1 к уже существующему значению в базе данных, если вы знаете, подскажите как, пожалуйста


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

Автор решения: rain

Ответ был найден совершенно внезапно. Поняв то что параметр в качестве названия столбца передать нельзя я залез снова в гугл по это поводу, и нашел решение, кому надо забирайте.

P.S Эти строки для того что бы они находились в классе, вне класса надо будет многое изменить


    def add_data(self, arg1, arg2):
        with self.connection:
            try:
                q = "UPDATE `your table` set `{data1}` = ({data1} + 1) WHERE `user_id` = {data2}"
                self.cursor.execute(q.format(data1=arg1, data2=arg2))
                return 1
            except sqlite3.OperationalError:
                return 0
→ Ссылка