我想使用PyAthenaJDBC库制作一个python脚本,它将使用雅典娜查询S3存储桶。图书馆是相当不错,但我有格式问题。PyAthenaJDBC查询字符串格式问题
我在单独的函数中将查询构造为字符串,并将查询字符串传递回cursor.execute(query)
。
查询字符串中有引号,看起来像这样:
SELECT day, elb_name
,COUNT (*) AS c
,100.0 * (
1.0 - (
SUM (
CASE
WHEN elb_response_code LIKE '5%' THEN 1
ELSE 0
END
)/cast(COUNT (*) as double)
)
) AS success_rate
,100.0 * SUM (
CASE
WHEN backend_processing_time < 0.1 THEN 1
ELSE 0
END
)/cast(COUNT (*) as double) AS t_lt_pt1
,100.0 * SUM (
CASE
WHEN backend_processing_time < 1 THEN 1
ELSE 0
END
)/cast(COUNT (*) as double) AS t_lt_1
,100.0 * SUM (
CASE
WHEN backend_processing_time < 5 THEN 1
ELSE 0
END
)/cast(COUNT (*) as double) AS t_lt_5
,100.0 * SUM (
CASE
WHEN backend_processing_time < 10 THEN 1
ELSE 0
END
)/cast(COUNT (*) as double) AS t_lt_10
FROM elb_logs_raw_native_part
WHERE year = '2017' AND
month = '03' AND
elb_name is not NULL AND
elb_name != ''
GROUP BY day, elb_name
ORDER BY c DESC
这将导致第二单引号错误的`LIKE“5%”语句。
ValueError: unsupported format character ''' (0x27) at index 186
我能避免错误,并成功地通过改变此线在库https://github.com/laughingman7743/PyAthenaJDBC/blob/master/pyathenajdbc/formatter.py#L115
从return (operation % kwargs).strip()
中的代码,operation == query
(上面粘贴)和kwargs == {}
return (operation).strip()
此时
我的具体问题是,我构建我的查询不正确?或者,这是我不明白的本地字符串格式,试图用空字典替换是一个坏主意?
就是这样。我应该看到这一点。谢谢! – manisha