我在从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允许以编程方式添加此数据?
答案 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))