如何在Python脚本中使用cURL命令执行druid查询?

9rygscc1  于 12个月前  发布在  Python
关注(0)|答案(2)|浏览(167)

我需要使用cURL命令在Python脚本中运行Druid查询。我能够在如下终端中获得结果。我是Python新手。
这就是我在终端可以做的事情。
第一个月
这是结果
[{"__time":"2018-01-01T00:00:00.000Z","account_algorithm_id":"","account_id":"008be-44ad","action":"attribution","browser_platform":"","browser_type":"","sft_link_id":"","link_index":"","link_url":"","template_version":"","bucket_id":"23-4032-91ca-506bd","campaign_id":"3745e5a2-1-9582-2456bd7","count":1,"creative_id":"ef-4958-8d84-8","email_domain":"","event":"purchased initial","experiment_id":"51bd7d6e-5cb3-44ce-f445973","extended_attributes.aid":"","extended_attributes.atype":"","extended_attributes.aid":"","extended_attributes.ink_index":"","extended_attributes.plate_version":"","extended_attributes.cloud_app":"","extended_attributes.domain_region":"","extended_attributes.is_global":"","extended_attributes.opened_by":"","extended_attributes.sms_type":"","is_duplicate":"","message_distinct":"\"AgEHDAMMAAA=\"","mime_type":"","revenue_sum":0.0,"trigger_type":"EmailTrigger","trigger_uuid":"89055b76-0620","user_count":"\"AQAAAQB3AQ==\"","user_distinct":"\"AgEHDAAA=\""}]
我想在我的Python脚本中运行一个druid查询。我试图在我的Python脚本中使用cURL命令来实现这一点。然后我需要将输出数据解析到CSV文件中。有人可以吗,请帮助

sf6xfgos

sf6xfgos1#

下面是Apache Druid项目中的一组示例,介绍如何使用requests包从python中使用Druid API。
https://github.com/apache/druid/blob/master/examples/quickstart/jupyter-notebooks/notebooks/04-api/00-getting-started.ipynb

xwmevbvl

xwmevbvl2#

如果您100%确定运行脚本的每个系统都安装了curl并可调用,那么...
你可以使用os.system()向运行脚本的系统发送一个命令,运行你提供的curl命令,然后保存结果为文本。然后,你可以使用Python来读取和解析你认为合适的。这说明了阅读文本文件部分,因为我认为它会在你提供的情况下工作(见下文):

import os
s = """curl 'http://druid.domain.vpc/druid/v2/sql' --header 'Content-Type: application/json' --data '{"query":"Select * from demo_table"}' > curl_result.txt"""
os.system(s)
with open("curl_result.txt", 'r') as file_read_handler:
    for line in file_read_handler:
        print(line)

字符串
我认为如果curl命令实际上可以检索内容,那么应该会显示第二个块中显示的内容。在我的测试中,curl命令试图运行,但显示为Could not resolve host: druid.domain.vpc,因此它不起作用。这可能是因为我运行它的端口/套接字被阻塞,或者另一端当时有问题。
或者你提供的不是一个最小的可重复的例子,这可能是因为找到一个sql数据库作为玩具例子来查询是很困难的?

相关问题