Это работает с жестко запрограммированной строкой в ветке else. Но мне также хотелось бы иметь жестко запрограммированный код без разрыва строки и переменную в ветке else.
Я отправил сюда только исходный код с соответствующим кодом ошибки, так как полный код слишком велик, и вы не должны отправлять сюда полный код. Если требуется дополнительный исходный текст, я также могу его отправить.
Это работает:
Код: Выделить всё
sql_update_query = """Update darsteller_kf set gebname =IFNULL(gebname, %s),
nicknames=IFNULL(nicknames, %s),
markenzeichen=IFNULL(markenzeichen, %s),
zusatz_info=IFNULL(zusatz_info, %s),
gebort=IFNULL(gebort, %s),
todesort=IFNULL(todesort,%s),
gebdat =IFNULL(gebdat,%s),
gestorben = IFNULL(gestorben,%s),
todesursache =IFNULL(todesursache,%s),
biografie_en = CASE
WHEN biografie_en IS NOT NULL THEN CONCAT(biografie_en, '\nIMDB Kurz-Bio:', %s)
ELSE CONCAT(biografie_en, 'IMDB Kurz-Bio:', %s)
END,
knownFor = IFNULL(knownFor,%s),
trivia = IFNULL(trivia, %s),
foto = IFNULL(foto, %s),
foto_online = IFNULL(foto_online, %s),
groesse = IFNULL(groesse, %s),
imdb_update_info = %s
where nconst = %s"""
print(sql_update_query)
#input_data = (lol_string, type_id, personNconst)
input_data = (myBirthName, nick_names_string, trade_mark_string, zusatzinfo_string, myBirtPlace,
myDeathPlace, myBirthDate, myDeathDate, deathNotes, mini_biography_string, KnownFor,
html_list, myHeadshot, fotoOnline, myHeight, imdb_update_info, personNconst)
cursor.execute(sql_update_query, input_data)
connection.commit()
print("Record Updated successfully ")
# Output the number of rows affected
print(cursor.rowcount, "record(s) affected.")
except mysql.connector.Error as error:
print("Failed to update record to database: {}".format(error))
finally:
if connection.is_connected():
cursor.close()
connection.close()
print("MySQL connection is closed")
Код: Выделить всё
biografie_en = CASE
WHEN biografie_en IS NOT NULL THEN CONCAT(biografie_en, '\nIMDB Kurz-Bio:', %s)
ELSE CONCAT(biografie_en, 'IMDB Kurz-Bio:', %s)
END,
Не удалось обновить запись в базе данных: 1210: Неверное количество аргументов при выполнении подготовленного оператора.
Попробуйте передать только переменную:
Код: Выделить всё
biografie_en = CASE
WHEN biografie_en IS NOT NULL THEN CONCAT(biografie_en, '\nIMDB Kurz-Bio:', %s)
ELSE %s
END,
Не удалось обновить запись в базе данных: 1210: Неверное количество аргументов, выполняющих подготовленный оператор.
Я потратил часы, пробуя множество тестов с разными примерами кода, но ничего не помогло.
Есть ли у кого-нибудь идеи по решению этой проблемы?>
Подробнее здесь: https://stackoverflow.com/questions/798 ... d-in-mysql
Мобильная версия