我们有一个带有JSON字段的模型,其中插入了用户标志。插入确实可以按预期工作,但是删除某些标志时,它们保留在字段中,并且更改不会持久保存到数据库中。
我们的模型中有以下方法:
def del_flag(self, key): if self.user_flags is None or not key in self.user_flags: return False else: del self.user_flags[key] db.session.commit() return True
databasse是postgres,我们对字段类型使用SQLalchemy JSON字段方言。有什么建议吗?
如果您使用的是Postgres <9.4,则无法直接更新JSON字段。您需要 flag_modified 函数将更改报告给SQLAlchemy:
from sqlalchemy.orm.attributes import flag_modified model.data['key'] = 'New value' flag_modified(model, "data") session.add(model) session.commit()