如何使用Peewee更新Postgres v9.4 +中的jsonb字段

时间:2018-01-16 21:23:01

标签: postgresql-9.4 jsonb peewee

我了解到在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来更新它。它只是对数据库的正常查询。

有谁知道更好的方法吗?

1 个答案:

答案 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()