我正在尝试使用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 DB。谢谢
答案 0 :(得分:1)
如果只想格式化后面出现的{}
,请用'{{}}'
转义第一个。
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)))