В чём подвох?? 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()
Возможно, причина в устаревшей версии MySQL. Попробуйте в sql-файле с помощью текстового редактора найти "TYPE = MYISAM" и заменить на "ENGINE = MYISAM". Либо просто обновите SQL и создайте БД заново. Но эта инфа с формуа 2013-2014 годов, так что может быть и неверной.