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 (mit einer fest codierten Zeichenfolge):
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 'hard-coded string'
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")
Record Updated successfully
1 record(s) affected.
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,
Fehler beim Aktualisieren des Datensatzes in der Datenbank: 1210: Falsche Anzahl von Argumenten beim Ausführen der vorbereiteten Anweisung.
Das Problem ist die Syntax in der else-Anweisung!
Wenn ich etwas anderes als eine fest codierte Zeichenfolge in die else-Anweisung einfüge, erhalte ich eine Fehlermeldung.
Ich habe Stunden damit verbracht, viele Tests mit unterschiedlichem Code auszuprobieren Beispiele, aber nichts hat funktioniert.
Ich kann einfach keine fest codierte Zeichenfolge mit einer Variablen (%s) im else-Zweig übergeben.
Hat jemand Ideen zur Lösung dieses Problems?
Mobile version