В чём подвох?? MySql

with connection.cursor() as cursor:
            update_material = cursor.execute(f"UPDATE `material` SET `s` = {SET} WHERE `name` = {prod['material'][0]}, `s` = {prod['s']};")
            print("Успех")
            connection.commit()

ОШИБКА:

(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ', `s` = 25' at line 1")

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

Автор решения: Михаил Ребров

WHERE

Ошибка в синтаксисе выражения WHERE

Когда вы перечисляете условия выборки

  • WHERE
    • name = {prod['material'][0]}
    • s = {prod['s']}

Вы их перечисляете через запятую.
Синтаксис SQL же предполагает что данные выражения будут связаны ключевыми словами AND либо OR

Соответственно вам необходимо заменить , на AND в выражении WHERE

Строковые значения и кавычки

Плюс, если Вы сами подготовливаете запрос и вручную вставляете в него значения - то оберните строковые значения кавычками.

Из двух полей одно точно было строковым и я его обернул

`name` = '{prod['material'][0]}'

поле s я пока оставил как есть, т.к. я не уверен в его типе, но если он строковый, то вам также стоит его обернуть кавычками.

За это наблюдение спасибо @Sergey K.


Итого:

with connection.cursor() as cursor:
            update_material = cursor.execute(f"UPDATE `material` SET `s` = {SET} WHERE `name` = '{prod['material'][0]}' AND `s` = {prod['s']};")
            print("Успех")
            connection.commit()

→ Ссылка
Автор решения: Sable_inc

Возможно, причина в устаревшей версии MySQL. Попробуйте в sql-файле с помощью текстового редактора найти "TYPE = MYISAM" и заменить на "ENGINE = MYISAM". Либо просто обновите SQL и создайте БД заново. Но эта инфа с формуа 2013-2014 годов, так что может быть и неверной.

→ Ссылка