python - 如何让 SQLAlchemy session.execute 在替换参数时不向字符串添加单引号?
问题描述
我在一个更大的语句中有这段 SQL,我需要替换两个变量:
jsonb_pretty(jsonb_build_object('analysis_config', jsonb_agg(
case value->>'name'
when :old_name then value || '{"name": ":new_name"}'
else value
end
))
问题是,当我确实session.execute(statement, params={"old_name": old_name, "new_name": new_name})
new_name
被单引号包围时,它就不起作用了。它需要用双引号明确括起来(我试图通过如上所述添加它们来做到这一点)。fstring 完美地工作,但我们不想在这里这样做。有什么简单的方法可以做到吗?谢谢!
解决方案
一种选择是将整个 JSON 字符串作为值传递。代替
when :old_name then value || '{"name": ":new_name"}'
利用
when :old_name then value || :new_name
并将编码字符串作为值传递:
import json
session.execute(
statement,
params={
"old_name": old_name,
"new_name": json.dumps({"name": new_name})
})
推荐阅读
- c# - 使用 C# 的 HP ALM REST API - 更新测试集中的数据
- java - 线程安全、静态方法和一些奇怪的代码
- jenkins - 在管道中使用 Jenkins 动态共享库
- vba - Excel 2016 VBA - 性能缓慢
- containers - 如何使用 LXC 创建自定义大小的磁盘
- sql - 使用 orderBy 计数的学说查询
- firebase - JS:firebase.init 错误:TypeError:无法读取未定义的属性“数据库”
- android - 如何使用 Glide 将图像加载到手机存储?
- json - Delphi 内存泄漏 TJSONTextReader
- android - 问题,当一个个扫描几个条码时