3

我已经看到了关于如何在 postgres 中存储 JSONB 的各种好的答案,但是从 Postgres 9.5 开始,我们现在能够插入现有的 JSONB 数组而不更新列中的数据。我能找到的所有材料都没有在任何地方记录,而且由于我是 SQLAlchemy 的新手(还有一些是 python),所以阅读代码并没有像我想要的那样真正帮助我。

我正在使用 Postgres 10.9、python 3.7 和 SQLAlchemy 1.3.8(带有 GINO 包装器)

这只是最新的尝试,但其中有很多错误:

await gathering. \
        update(participation=func.jsonb_insert("participation",
                                                "{applications}",
                                                func.to_jsonb(json.dumps(application)))). \
        apply()

参与栏中,我有一个 JSONB 对象

{ 
    "applications": [ { ... element to be appended} ] 
}

在这种特殊情况下,代码会产生错误:

无法确定多态类型,因为输入的类型未知

4

1 回答 1

2

弄清楚了..

ajs = json.dumps(application)
await gathering. \
                update(participation=func.jsonb_insert(
                       json.dumps(gathering.participation), 
                       ["applications","0"],  ajs)). \
                apply()

这是试验和错误。必须有比这更优雅的解决方案

于 2019-09-08T21:30:40.693 回答