Beide mv
en ml
worden niet herkend, omdat u ze niet als variabelen hebt gedefinieerd.
Het tweede argument van execute
statement is een woordenboek, en alle elementen van je gewone query "UPDATE client SET musicVol = :mv , messageVol = :ml"
ontsnapt met een dubbele punt worden gezocht in de sleutels van dit woordenboek. De execute
methode heeft geen sleutel gevonden 'mv'
noch 'ml'
in dit woordenboek, wordt daarom een fout gemaakt.
Dit is de juiste versie:
db.my_session.execute(
"UPDATE client SET musicVol = :mv, messageVol = :ml",
{'mv': music_volume, 'ml': message_volume}
)