Обновление Python mysql добавляет жестко запрограммированную строку и переменную в существующее поле в таблице mysql в сMySql

Форум по Mysql
Ответить
Anonymous
 Обновление Python mysql добавляет жестко запрограммированную строку и переменную в существующее поле в таблице mysql в с

Сообщение Anonymous »

У меня возникли проблемы с обновлением поля таблицы в Python. Я хочу добавить жестко закодированный текст и переменную в существующее поле MySQL.
Это работает с жестко запрограммированной строкой в ​​ветке 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»