跳转到主要内容
ClickHouse Connect 提供了许多适用于高级用例的其他选项。

全局设置

只有少量设置项可用于全局控制 ClickHouse Connect 的行为。可通过顶层 common 包访问这些设置:
在使用 clickhouse_connect.get_client 方法创建客户端之前,务必先修改这些常用设置:autogenerate_session_idproduct_namereadonly。在客户端创建后再更改这些设置,不会影响现有客户端的行为。
当前定义了以下全局设置:

压缩

ClickHouse Connect 支持对查询结果和插入使用 lz4、zstd、brotli 和 gzip 压缩。请始终记住,使用压缩通常需要在网络带宽/传输速度与 CPU 使用率之间进行权衡 (客户端和服务器端都是如此) 。 要接收压缩数据,ClickHouse server 的 enable_http_compression 必须设置为 1,或者用户必须具有按“每次查询”更改该设置的 permission。 调用 clickhouse_connect.get_client 工厂 method 时,可通过 compress parameter 控制压缩。默认情况下,compress 设置为 True,这会启用默认压缩设置。对于通过 queryquery_npquery_df client methods 执行的查询,ClickHouse Connect 会添加 Accept-Encoding 请求头,其中包含 lz4zstdbr (如果已安装 brotli 库,则表示 brotli) 、gzipdeflate 编码;这些编码会用于通过 query client method 执行的查询 (以及间接通过 query_npquery_df 执行的查询) 。 (对于绝大多数请求,ClickHouse server 会返回使用 zstd 压缩的载荷。) 对于插入操作,默认情况下 ClickHouse Connect 会使用 lz4 压缩插入块,并发送 Content-Encoding: lz4 HTTP 请求头。 get_clientcompress parameter 也可以设置为特定的压缩方法,即 lz4zstdbrgzip 之一。随后,该方法将同时用于插入和查询结果 (如果 ClickHouse server 支持) 。现在,所需的 zstdlz4 压缩库默认会随 ClickHouse Connect 一起安装。如果指定 br/brotli,则必须单独安装 brotli 库。 请注意,raw* client methods 不会使用 client configuration 中指定的压缩设置。 我们也不建议使用 gzip 压缩,因为无论是压缩还是解压数据,它都明显比其他方案更慢。

HTTP 代理支持

ClickHouse Connect 通过 urllib3 库提供基础的 HTTP 代理支持。它可识别标准的 HTTP_PROXYHTTPS_PROXY 环境变量。请注意,使用这些环境变量会影响通过 clickhouse_connect.get_client 方法创建的任何 client。或者,如果要为每个 client 单独配置,可以向 get_client 方法传入 http_proxyhttps_proxy argument。有关 HTTP 代理支持实现的详细信息,请参阅 urllib3 文档。 如需使用 SOCKS 代理,可以将 urllib3SOCKSProxyManager 作为 pool_mgr argument 传递给 get_client。请注意,这需要直接安装 PySocks 库,或为 urllib3 依赖项启用 [socks] 选项。

“旧” JSON 数据类型

实验性的 Object (或 Object('json')) 数据类型已弃用,应避免在生产环境中使用。出于向后兼容的考虑,ClickHouse Connect 仍为该数据类型提供有限支持。请注意,这种支持不包括那些预期会以字典或等效类型返回“顶层”或“父级” JSON 值的查询,这类查询会导致异常。

“新” Variant/Dynamic/JSON 数据类型 (Experimental 功能)

从 0.8.0 版本开始,clickhouse-connect 开始对新的 (同样处于 Experimental 阶段的) ClickHouse 类型 Variant、Dynamic 和 JSON 提供实验性支持。

使用说明

  • JSON 数据可以作为 Python 字典插入,也可以作为包含 JSON 对象 {} 的 JSON 字符串插入。不支持其他形式的 JSON 数据。
  • 对这些类型使用 subcolumns/paths 的查询将返回该子列的类型。
  • 其他使用说明请参见 ClickHouse 文档

已知限制

  • 使用这些类型前,必须先在 ClickHouse 设置中启用它们。
  • “新” JSON 类型自 ClickHouse 24.8 版本起可用。
  • 由于内部格式发生变化,clickhouse-connect 仅兼容 ClickHouse 24.7 及以上版本中的 Variant 类型。
  • 返回的 JSON 对象最多只会返回 max_dynamic_paths 个元素 (默认值为 1024) 。此问题将在未来版本中修复。
  • 插入到 Dynamic 列中的值始终会采用 Python 值的字符串表示形式。待 https://github.com/ClickHouse/ClickHouse/issues/70395 修复后,此问题将在未来版本中修复。
  • 这些新类型的实现尚未用 C 代码优化,因此性能可能会比更简单、更成熟的数据类型稍慢。
最后修改于 2026年6月10日