python 连接clickhouse 的http api

我司为了数据安全,连接数据库时不再使用明文密码,对外只提供http rest api接口,因此原先那种clickhouse_driver的形式不能再使用,需要请求url的方式来获取数据,研究了下

https://clickhouse.com/docs/en/interfaces/http/#cli-queries-with-parameters

最终成功获取数据,并返回了df,代码如下


import pandas as pd

import requests

def connclickhouse_get_df(sql):

    headers = {"Content-Type": "json/html; charset=UTF-8"}

    url = 'http://host:port/?database=database&user=user&password='.fromat(host,port,database,user)

    result = requests.post(url,headers = headers,data = sql )

    r = result.json()

    df = pd.DataFrame(r['data'])

    return df

sql = """

select 1

FORMAT JSON

"""

## 注意上面的sql 后面增加了 FORMAT JSON  ,是为了返回json格式的结果,然后转为df

df = connclickhouse_get_df(sql)

image

遇到sql里面有中文,需要将整个sql编码一下,否则会报错

df = connclickhouse_get_df(sql.encode("utf-8"))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。