Ошибка при обновлении: 1064, "You have an error in your SQL syntax

bb = "user_1"
user_id = "555454455445"
peer_id = "20000000000000003"


cur.execute(f"UPDATE rooms SET '{bb}' = '{peer_id}' WHERE peer_id = '{peer_id}'")
con.commit()

pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that 
corresponds to your MariaDB server version for the right syntax to use near ''user_1' = 
'555454455445' WHERE peer_id = '2000000003'' at line 1")

Если поставить просто user_1, то все работает, а если в виде переменной то выдает краш.

С чем это может быть связано?


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

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

Попробуйте так:

sql = f"""UPDATE rooms SET {bb} = %s WHERE peer_id = %s"""
params = (peer_id, peer_id)
cur.execute(sql, params)

NOTE: всегда используйте параметризированные запросы, чтобы избежать SQL Injections и позволить БД кешировать запросы.

PS имена объектов (таблиц, столбцов и других объектов БД) задавать в качестве параметров SQL запроса нельзя, поэтому на их месте используйте форматирование Python строк, но не для литералов.

→ Ссылка