Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Sqlalchemy, Rohabfrage und Parameter

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}
)