SQLAlchemy update()只接受手动编写的JSON

时间:2015-07-20 12:35:05

标签: python python-3.x flask sqlalchemy

我在从html表单更新单行时遇到问题(我使用Flask框架和SQLAlchemy,Python 3.4)。我想将我的数据作为JSON传递给SQLAlchemy的更新方法()

这对我有用:

db_session.query(Model_tbl_name).filter_by(id=Model_tbl_id).update({"title_hr":request.form['title_hr'],"text_hr":request.form['text_hr']})

在那里,您可以看到在update()方法中将数据添加为JSON数组。这非常有效。

但是当我尝试手动添加JSON内容时,它不起作用:

db_session.query(Model_tbl_name).filter_by(id=Model_tbl_id).update(str(json.dumps(new_request_form, ensure_ascii=False)))

我检查了json.dumps()中传递的数据,它是格式良好的JSON。 我打印时看起来像这样:

{"categories_id": "", "front_page": "ne", "price": "0.00", "sifra": "jghj", "title_hr": "ghjhg55573err", "video_title_hr": "ghjhgj", "video_url": ""}

可能是什么问题?为什么SQLAlchemy doesen允许以编程方式添加此数据?

1 个答案:

答案 0 :(得分:2)

您应该将dict传递给update,而不是str。要解决此问题,请将json.dumps替换为json.loads

db_session.query(Model_tbl_name).filter_by(id=Model_tbl_id).update(json.loads(new_request_form))