使用sqlalchemy为实体创建了JSON或JSONB类型的字段:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    data = db.Column(db.JSON)
def __init__(self, data):
    self.data = data

为User表创建新的记录并写入数据库:

user = User({"country":"Sri Lanka"})
db.session.add(user)
db.session.commit()

使用以下代码无法更新json结构的键值对:

user = User.query.first()
user.data["province"] = "south"
db.session.add(user)
db.session.commit()

需要使用“flag_modified”方法才能够更新:

from sqlalchemy.orm.attributes import flag_modified
user = User.query.first()
user.data["province"] = "south"
flag_modified(user, "data")
db.session.add(user)
db.session.commit()

stackoverflow.com/questions/6… stackoverflow.com/questions/3… bashelton.com/2014/03/upd…

分类:
后端
标签: