2015-09-16 3 views
0

Я пытаюсь обновить запись в таблице 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 во всем приложении. Заранее спасибо!

+0

Вы уверены, что выражение 'Эксперимент.ExperimentStatus -" Approved "' прав? Что означает знак минус в этом случае? –

+0

Вы правы. Эта линия была ошибкой. Я должен был использовать 'update ({Experiment.ExperimentStatus: new_status})'. Изменено, и это сработало. Благодарю. – Swetabh

ответ

1

Ошибка была в том, как я предоставлял значение обновления в последней строке запроса. Я изменил его на update({Experiment.ExperimentStatus: "Approved"}), и он сработал.

Смежные вопросы