使用请求通过 http 协议将设置发送到 clickhouse

问题描述

通过 clickhouse-client 代码如下所示:

clickhouse-client --input_format_allow_errors_num=1
--input_format_allow_errors_ratio=0.1
--query="INSERT INTO db.table VALUES (...,....,...) FORMAT CSV"

我正在使用 requests,我的代码如下所示:

query = 'INSERT INTO db.table VALUES (...,...) FORMAT CSV'
r = requests.post(host,data=query,auth=(CH_USER,CH_PASSWORD),verify=True)

如何传递设置如

--input_format_allow_errors_num=1
--input_format_allow_errors_ratio=0.1

使用python-requests

解决方法

看起来您将这些设置作为查询参数和 SQL 查询传递到 POST 响应正文中,但您似乎也可以将其包含在查询参数中。

import requests

auth = ("username","password")
query = 'INSERT INTO db.table VALUES (...,...,...) FORMAT CSV'
params = {
    "input_format_allow_errors_num": 1,"input_format_allow_errors_ratio": 0.1
}

response = requests.post(host,data=query,params=params,auth=auth)

试一试。我从:https://clickhouse.tech/docs/en/interfaces/http/