gpt4 book ai didi

sqlalchemy 使用 json_set 更新特定的 JSON 字段

转载 作者:行者123 更新时间:2023-12-05 06:26:22 50 4
gpt4 key购买 nike

我打算使用 func 函数来更新 Sqlalchemy 中的特定 JSON 字段,但是我遇到了一些问题,这是我更新字段的代码:

self.db.query(TestModel).filter(TestModel.test_id == self._test_id).update(
{field_name: func.json_set(
field_name,
"$." + key,
formatted_val)}
, synchronize_session='fetch'
)
self.db.commit()

我运行上面的代码并得到错误:

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) malformed JSON

于是,我去查看日志,发现Sqlalchemy 形成了这样一个SQL 子句:

UPDATE test_model SET field_name=json_set('field_name', '$.keyname', 'value') WHERE test_model.test_id = 1;

问题是 Sqlalchemy 不应该使用 'field_name' 来指定它应该使用 field_name 来指定字段,我尝试在下面运行更正的 sql 子句客户端:

UPDATE test_model SET field_name=json_set(field_name, '$.keyname', 'value') WHERE test_model.test_id = 1;

它可以找到

我只是想知道如何使 Sqlalchemy 形成从 'field_name'field_name 的正确字段?

最佳答案

您应该将名称为模型的第一个参数传递给函数 func.json_set:

self.db.query(TestModel).filter(TestModel.test_id == self._test_id).update(
{field_name: func.json_set(
TestModel.field_name,
"$." + key,
formatted_val)},
synchronize_session='fetch'
)
self.db.commit()

关于sqlalchemy 使用 json_set 更新特定的 JSON 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56219291/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com