如何使用 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()
我了解到在 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()