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()

Хоть выглядит довольно странно, но работает

→ Ссылка