我了解到在Postgres v9.4及更高版本中,可以对jsonb列进行部分更新。
我在Postgres数据库上使用Peewee。 Peewee支持声明列jsonb,但我找不到更新jsonb列以利用部分更新功能的有效方法。
这就是我在做什么 -
SQL = "update table_name set data = data || %s where tid = %s"
vals = (json.dumps(partial_data), tid)
db_pointer.execute_sql(SQL, vals)
data
是列名
db_pointer
是使用Playhouse指向Postgres数据库的指针。
上面的代码工作正常,但在这里我没有使用Peewee来更新它。它只是对数据库的正常查询。
有谁知道更好的方法吗?
答案 0 :(得分:1)
正如我对GitHub所评论的那样,你可以改为:
data = {'some': 'data', 'for json field': [1, 2, 3]}
query = ModelClass.update({
ModelClass.data: ModelClass.data.concat(data)
}).where(ModelClass.id == some_id)
query.execute()