python - 在 Python 中从 JSON 字符串中提取数据时出错(使用 Redshift)
问题描述
我正在尝试使用 Python 中的 SQL 从 JSON 字符串中提取数据。我收到一个错误
IndexError: tuple index out of range
下面给出的是我正在尝试的示例查询
dwh_cursor.execute(sql.SQL("""SELECT a.id, a.name,B.setup as setup,
CASE WHEN (setup::JSON -> 'refcol')::TEXT = '{}' THEN 'data_missing'
ELSE 'data_correct' END AS ColumnMapping
FROM sales a join details b on a.sale_id = b.id
and a.name = {}""").format(sql.Literal(name)))
如果我排除了从 JSON 中提取数据的最后一个表达式,则上述查询运行良好。仅当我包含此 JSON 提取列(列名称:ColumnMapping)时,才会引发错误。任何人都可以指导如何解决这个问题。
我正在使用 Redshift 数据库。谢谢
解决方案
如果您只想格式化后一个出现的{}
,请使用 . 转义第一个'{{}}'
。
dwh_cursor.execute(sql.SQL("""SELECT a.id, a.name,B.setup as setup,
CASE WHEN (setup::JSON -> 'refcol')::TEXT = '{{}}' THEN 'data_missing'
ELSE 'data_correct' END AS ColumnMapping
FROM sales a join details b on a.sale_id = b.id
and a.name = {}""").format(sql.Literal(name)))
推荐阅读
- spring-boot - 动态删除zuul路由不重启网关
- javascript - 从 JSON 中获取第一个 Src
- javascript - jquery 无法使用此 ID #tel / 传真
- php - 将 CentOS 6.9 升级到 CentOS 7.5 时,PHP 5.4.35 在 CentOS 6.9 上运行会正常工作吗?
- python - 已克隆 Python Flask 应用程序并部署在 Heroku 上。但它显示“内部服务器错误”
- angular - 将 Angular 组件移至 Wordpress
- angular - 角码生成问题Details.ts
- c# - 无法使用 Visual Studio 调试 VSTO 解决方案
- python-3.x - 在python中使用链表减去两个数字
- sql - 具有来自两个表的两列的 Sql server XML 路径