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

Python SQLAlchemy update()只接受手动编写的JSON,python,python-3.x,flask,sqlalchemy,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']}) 在这里,您可以看到数据

我在更新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不允许以编程方式添加此数据?

您应该将
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))

我也试过了,但没有帮助。后来我尝试使用str()包装器,但也没有用。我只是不明白为什么SQLAlchemy不允许这样做?它成功了!在json.loads()之前我必须这样做:new_request_form=json.dumps(new_request_form,确保_ascii=False)。非常感谢尤西@DarioBB,
转储
反转
加载的操作
。如果您需要这两个参数才能使代码正常工作,您可以完全消除它们,并按原样传递参数
.update(new\u request\u form)