You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让SQLAlchemy的session.execute替换参数时不自动添加单引号

解决方案

你的问题根源是把参数占位符写在了SQL的字符串字面量内部,数据库驱动识别到你传入的是字符串类型参数时,会自动添加单引号包裹,最终会生成'{"name": "'你的新名称'"}'的错误语法结构。

你完全不需要手动拼接JSON字符串,直接用PostgreSQL原生的jsonb_build_object函数构造目标JSON结构即可,修改后的SQL片段如下:

jsonb_pretty(jsonb_build_object('analysis_config', jsonb_agg(
            case value->>'name'
            when :old_name then value || jsonb_build_object('name', :new_name)
            else value
            end
        )))

修改后你原先的参数绑定代码不需要做任何改动,直接执行即可:

session.execute(statement, params={"old_name": old_name, "new_name": new_name})

这个方案既规避了f-string拼接带来的SQL注入风险,也完全解决了参数自动加单引号的问题,性能和安全性都更优。


内容的提问来源于stack exchange,提问作者Larissa Leite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:48:00