使用请求通过 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的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 最全操作——nginx反向代理(5)

http基础

浏览器的一个请求从发送到返回都经历了什么

浏览器的一个请求从发送到返回经历了什么(转)

浏览器的一个请求从发送到返回都经历了什么

浏览器的一个请求从发送到返回都经历了什么