Sowohl mv
und ml
werden nicht erkannt, da Sie sie nicht als Variablen definiert haben.
Das zweite Argument von execute
-Anweisung ist ein Wörterbuch, und alle Elemente Ihrer einfachen Abfrage "UPDATE client SET musicVol = :mv , messageVol = :ml"
die mit einem Doppelpunkt maskiert sind, werden in den Schlüsseln dieses Wörterbuchs gesucht. Die execute
Methode hat keinen Schlüssel 'mv'
gefunden noch 'ml'
in diesem Wörterbuch, daher wird ein Fehler ausgelöst.
Dies ist die richtige Version:
db.my_session.execute(
"UPDATE client SET musicVol = :mv, messageVol = :ml",
{'mv': music_volume, 'ml': message_volume}
)