Sqlalchemy在python中使用binaryexpression更新json列

2024-05-28 23:02:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我也在尝试使用python中的Sqlalchemy binaryexpression更新postgresql表的JSON数据类型列。在

示例

unit_price = 10.10
final_data = {
    "price_details": {
        "unit_price":unit_price,
        "total_amt":testmodel.qty * unit_price
    }
}

test_db = session.query(testmodel).filter(testmodel.id >= 10)
test_db.update(final_data,synchronize_session=False)

在上面的例子中,我试图使用二进制表达式计算total_amt。但我错了。在

^{pr2}$

Tags: testjsondbdatasqlalchemysessionpostgresqlunit
1条回答
网友
1楼 · 发布于 2024-05-28 23:02:44

为了在更新中使用DB值,必须使用DB-JSON特性,而不是从Python传递序列化的JSON,更不用说pythonjson编码器不知道如何处理SQL表达式。参考Postgresql JSON functions and operators似乎{}或其JSONB变体就是您要寻找的:

unit_price = 10.10
final_data = {
    "price_details": func.json_build_object(
        "unit_price", unit_price,
        "total_amt", testmodel.qty * unit_price
    )
}

test_db = session.query(testmodel).filter(testmodel.id >= 10)
test_db.update(final_data, synchronize_session=False)

相关问题 更多 >

    热门问题