针对于 MySQL 的 JSON 类型,官方上已经做了详细的介绍,在此,简单啰嗦几句吧,毕竟曾经没怎么遇到过。
sql 脚本形式: 创建:create table stu(id int primary key, name varchar(20), remark JSON); 插入:insert into stu(id, name, remark) values(1, 'ha', '{'sc':'1a', 'mc':'2b'}'); 更新:update stu set remark = json_set(remark, '$.sc', '3a'); 删除:update stu set remark = json_remove(remark, '$.sc'); 增键:update stu set remark = json_set(remark, '$.tc', '5e');
对于这些操作,是使用 sql 脚本进行,需要执行原生 sql 脚本。但平常更多使用的是 ORM 形式。
orm 形式: 对于 ORM 形式,当然也可以使用 嵌入式的 sql 脚本进行完成,(此处不再说)。 或着结构对象来做。 比如上面的这个表,对于 ORM 形式,应该有一个 model 与之对应: 可以为: class Stu: id = Column(types.integer, primary_key=True) name = Column(types.String(20)) remark = Column(types.JSON)
这个时候,可以这么做:
the_stu = self.db_session.query(Stu).filter(Stu.id == uid).first()
rem = the_stu.remark # 备份
the_stu.remark=None
db_session.flush() # 具体为什么这么做还没明白,直接赋值不起作用。
rem['news'] = 'newsss' # 添加新值
the_stu.remark = rem # 将新的对象重新赋给模型对象的属性。
db_session.commit()
不知道还有没有更好的解决方式,希望多多指教,大家都可以少走弯路,提高工作效率,一起学习加群 902788038, 群里也有 HR 小姐姐们,在进步的同时也祝愿能找到心仪工作。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.