使用请求通过 http 协议将设置发送到 clickhouse
Posted
技术标签:
【中文标题】使用请求通过 http 协议将设置发送到 clickhouse【英文标题】:Send settings to clickhouse via http protocol using requests 【发布时间】:2021-04-15 13:30:32 【问题描述】:通过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
?
【问题讨论】:
考虑使用专用包clickhouse_driver。参见示例:clickhouse-driver.readthedocs.io/en/latest/… @vladimir 我正在使用 logs-api yandex 库,它在后台使用requests
【参考方案1】:
看起来您将这些设置作为查询参数和 POST 响应正文中的 SQL 查询传递,但您似乎也可以将其包含在查询参数中。
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/
【讨论】:
以上是关于使用请求通过 http 协议将设置发送到 clickhouse的主要内容,如果未能解决你的问题,请参考以下文章