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

How to update jsonb field in Postgres v9.4+ using 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 来更新它。它只是对数据库的正常查询。

有谁知道更好的方法吗?

正如我在 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()