Flask -sqlalchemy Rowproxy не может быть изменен - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь обновить записи «status» из моей базы данных, где «sendtime» было в прошлом. Я получаю набор записей, которые я могу перебрать и просмотреть все их поля без проблем. Проблема возникает, когда я пытаюсь обновить поле состояния.

В результате Rowproxy не поддерживается назначение элемента :

query = ('SELECT * FROM jobs '
    'WHERE status="INCOMPLETE" '
    'AND sendtime <= NOW()')
overdueJobs = db.engine.execute(query).fetchall()
for overdueJob in overdueJobs:
    overdueJob.status = "COMPLETE"
db.session.commit()

Я прочитал это ответ на SO , основанный на указанной выше ошибке, и, хотя преобразование в dict позволяет мне редактировать поля без ошибок, оно фактически ничего не передает в базу данных.

Я полагаю, что я делаю что-то не так в отношении как я использую запрошенные результаты. Я думаю, что мне нужно как-то использовать свою модель jobs для доступа к полям, но документация и другие вопросы, которые я нашел в SO, относятся к одному результату запроса. Что у меня может быть больше, чем это. Как мне отредактировать поля каждой записи, возвращаемой из этого запроса?

1 Ответ

1 голос
/ 01 апреля 2020

Я нашел ответ на свой вопрос здесь .

Мне нужно было изменить мой запрос с

overdueJobs = db.engine.execute(query).fetchall()enter code here

На

overdueJobs = jobs.query.from_statement(db.text(query)).all()

Где jobs модель в моей базе данных. Затем я мог получить доступ к каждой строке в качестве модели, циклически возвращая полученный результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...