今天遇到一灵异事件,ORM更新操作,一字段始终不生效,最后发现问题原因是postgres的jsonb导致的
表结构:
CREATE TABLE XX(value jsonb default '{}',...)
ORM:
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.dialects.postgresql import JSONBdb = SQLAlchemy()class XX(db.Model):__tablename__ = 'xx'value = db.Column(JSONB, default={}, doc='xxx')...
常规的更新写法,对他不生效,需要如下操作才能更新成功:
from sqlalchemy.orm.attributes import flag_modifiedobj = XX.query.first()
obj.value = new_value_dict
flag_modified(obj, "value") # !!!! 不加就更新不成功
db.session.add(xx)
db.session.commit()