Es funktioniert mit einer fest codierten Zeichenfolge im else-Zweig. Ich hätte aber auch gerne ein Hardcodiertes ohne Zeilenumbruch und eine Variable im else-Zweig.
Ich habe hier nur den Quellcode mit dem entsprechenden Fehlercode gesendet, da der vollständige Code zu groß ist und man hier keinen vollständigen Code senden soll. Wenn mehr Quelltext benötigt wird, kann ich ihn auch senden.
Das funktioniert:
Code: Select all
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")
Code: Select all
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,
Aktualisierung des Datensatzes in die Datenbank fehlgeschlagen: 1210: Falsche Anzahl von Argumenten führt die vorbereitete Anweisung aus
Versuchen Sie, nur die Variable zu übergeben:
Code: Select all
biografie_en = CASE
WHEN biografie_en IS NOT NULL THEN CONCAT(biografie_en, '\nIMDB Kurz-Bio:', %s)
ELSE %s
END,
Aktualisierung des Datensatzes in die Datenbank fehlgeschlagen: 1210: Falsche Anzahl von Argumenten führt die vorbereitete Anweisung aus
Ich habe Stunden damit verbracht, viele Tests mit verschiedenen Codebeispielen auszuprobieren, aber nichts hat funktioniert.
Hat jemand Ideen zur Lösung dieses Problems?
Mobile version