Cả mv
và ml
sẽ không được nhận dạng, vì bạn chưa xác định chúng là biến.
Đối số thứ hai của execute
câu lệnh là một từ điển và tất cả các phần tử của truy vấn đơn giản của bạn "UPDATE client SET musicVol = :mv , messageVol = :ml"
thoát với dấu hai chấm đang được tìm kiếm trong các khóa của từ điển này. execute
phương pháp không tìm thấy khóa 'mv'
cũng không phải 'ml'
trong từ điển này, do đó một lỗi được nêu ra.
Đây là phiên bản chính xác:
db.my_session.execute(
"UPDATE client SET musicVol = :mv, messageVol = :ml",
{'mv': music_volume, 'ml': message_volume}
)