我有一个表,其中有一列声明为 json,我需要通过向 json 值添加键值来更新记录。
model
class User(db.Model):
__tablename__ = 'users'
loginId = db.Column(db.String(128), nullable=False, primary_key=True)
_password = db.Column(db.String(128), nullable=True)
views = db.Column(JSON, nullable=True)
控制器
@mod_event.route('/view', methods=['POST'])
def view():
try:
params = request.json
loginId = params['dream']['loginId']
users.update().\
where(users.c.loginId==loginId).\
values(views=<query>))
假设当前值在views
是 {'1001' : 1}
如果应该查询什么views
必须更新为 -
- {'1001':2}
- {'1001':1,'1002':1}
如果我不想先查询该值,请更改并更新回来。
我很难弄清楚如何在单个查询中执行此操作,请帮忙,谢谢!
如果你正在使用JSONB
,您可以使用jsonb_set
功能
(table
.update()
.values(views=func.jsonb_set(table.c.views,
'{%s}' % '1002',
1))
.where(...))
如果您从其他列插入
(table
.update()
.values(views=func.jsonb_set(table.c.views,
'{%s}' % '1002',
other_table.c.other_column.cast(String).cast(JSONB)))
.where(...))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)