sqlite ошибка near "(": syntax error
Готовя функцию для более простой работой с sqlite, встретил не особо понятную мне ошибку
Traceback (most recent call last):
File "C:\python\py\bot2.py", line 46, in <module>
update_database(set_name = "coin", value_name = "123", where_name = "294627349")
File "C:\python\py\bot2.py", line 32, in update_database
cursor.execute("UPDATE (?) SET (?) = (?) WHERE (?) = (?)", (table_name, set_name, value_name, where_who, where_name) )
sqlite3.OperationalError: near "(": syntax error
Вот сама функция и то, что я на неё подаю:
def update_database(set_name, value_name, where_name, table_name = "num", where_who = "id"):
cursor.execute("UPDATE (?) SET (?) = (?) WHERE (?) = (?)", (table_name, set_name, value_name, where_who, where_name) )
sqlite_connection.commit()
update_database(set_name = "coin", value_name = "123", where_name = "294627349")
Почему так происходит? Хотя оно работает в более простых вариантах, по типу таких:
cursor.execute("UPDATE num SET coin = (?) WHERE id = ?", (coin_value, id_value))
Ответы (1 шт):
Автор решения: Sasonit
→ Ссылка
Кажется нашёл костыль, который работает - передавать значение с помощью списка, а названия через f-строку. Выглядит это примерно так:
def update_database(set_name, value_name, where_name, table_name = "num", where_who = "id"):
cursor.execute(f"UPDATE {table_name} SET {set_name} = (?) WHERE {where_who} = (?)", (value_name, where_name))
sqlite_connection.commit()
Хоть выглядит довольно странно, но работает