Ошибка 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 шт):
Ответ был найден совершенно внезапно. Поняв то что параметр в качестве названия столбца передать нельзя я залез снова в гугл по это поводу, и нашел решение, кому надо забирайте.
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