在Python中使用Redshift从JSON字符串提取数据时发生错误

时间:2018-10-18 07:14:20

标签: python json amazon-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 DB。谢谢

1 个答案:

答案 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)))