Я пытаюсь обновить запись в таблице SQLAlchemy, используя ее ORM. Вот запрос, который я пишу:Операция обновления SQLAlchemy дает ошибку MySQL 1292
localsession.query(Experiment).\
filter(Experiment.UserExperimentNumber==ExperimentId).\
filter(Experiment.UserId==UserId).\
update({Experiment.ExperimentStatus: Experiment.ExperimentStatus - "Approved"})
Это дает мне Operational ошибку с кодом ошибки в MySQL 1292 Ниже приводится сообщение об ошибке:
OperationalError: (OperationalError) (1292, "Truncated incorrect DOUBLE value: 'ForReview'") 'UPDATE `Experiment` SET `ExperimentStatus`=(`Experiment`.`ExperimentStatus` - %s) WHERE `Experiment`.`UserExperimentNumber` = %s AND `Experiment`.`UserId` = %s' ('Approved', '102', '1')
Я попытался ищу ошибки MySQL, упомянутые и кажется, что ошибка вызвана оператором AND
в WHERE
запроса MySQL.
Как исправить это? Есть ли другая причина ошибки? Я понимаю, что я мог бы просто написать запрос без слоя ORM, но я хотел бы избежать этого, потому что я использовал ORM во всем приложении. Заранее спасибо!
Вы уверены, что выражение 'Эксперимент.ExperimentStatus -" Approved "' прав? Что означает знак минус в этом случае? –
Вы правы. Эта линия была ошибкой. Я должен был использовать 'update ({Experiment.ExperimentStatus: new_status})'. Изменено, и это сработало. Благодарю. – Swetabh