Ошибка при обновлении: 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 строк, но не для литералов.