Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Sqlalchemy, consulta bruta e parâmetros


Ambos mv e ml não serão reconhecidos, pois você não os definiu como variáveis.

O segundo argumento de execute declaração é um dicionário e todos os elementos da sua consulta simples "UPDATE client SET musicVol = :mv , messageVol = :ml" escapados com dois pontos estão sendo procurados nas chaves deste dicionário. O execute método não encontrou uma chave 'mv' nem 'ml' neste dicionário, portanto, um erro é gerado.

Esta é a versão correta:
db.my_session.execute(
    "UPDATE client SET musicVol = :mv, messageVol = :ml",
    {'mv': music_volume, 'ml': message_volume}
)