是否可以使用jinjasql和pyhive对配置单元执行查询?当我试的时候,我犯了以下错误。
pyhive.exc.ProgrammingError: Unsupported param format:
odict_values(['XXXXXXX'])
我可以使用jinjasql和pyhive执行查询,但是我需要同时使用这两种方法来防止sql注入。
环境(都在同一个虚拟机上。)
hortonworks数据平台(hdp®) 2.6.4用于virtualbox的hortonworks沙盒
jinjasql 0.1.6版
Hive0.5.1
python 3.5.5版
2条答案
按热度按时间wztqucjr1#
正如您所提到的,pyhive允许list作为execute参数,我按照您的建议使用list函数将参数转换为list。
它可以从Hive中获取记录。
p4rjhz4m2#
pyhive在params中支持list、tuple和dict。而jinjasql支持多个param样式,如本文文档中所述
它应该返回一个列表,但“named”或“pyformat”将返回字典。因为jinjasql创建了ordereddict,所以它抛出了这个异常。解决方案应该是使用返回列表的param样式。
希望这有帮助:)
更新python3:在python3中,必须将参数转换为list,因为dict.values()返回字典值的视图。