全局设置
common 包访问:
请在创建客户端前配置客户端创建设置。生成的会话/查询 ID、产品标识等设置会被复制到客户端专属状态中,因此之后对全局设置的更改不会更新现有客户端。绑定和插入设置则不同:绑定参数时会读取
naive_datetime_binding 和 dict_parameter_format;序列化包含 Python datetime 对象或 DateTime64 ISO 字符串的原生插入列时,会读取 naive_datetime_insert。更改这些设置会影响现有客户端。可复用的插入上下文会在每次插入时使用当前的 naive_datetime_insert 值。压缩
lz4、zstd、brotli、gzip 和 deflate 响应压缩。Native insert 支持 lz4、zstd、brotli 和 gzip。压缩以增加 CPU time 开销为代价,减少网络传输量。
要接收压缩数据,ClickHouse server 的 enable_http_compression 必须设置为 1,或者用户必须具有按“每次查询”修改该设置的 permission。
压缩由传给 get_client 和 get_async_client 的 compress argument 控制。默认值 True 会声明所有可用的响应编码,并使用 lz4 压缩 Native insert 块。将 compress=False 可禁用压缩,或者传入 "lz4"、"zstd"、"br" 或 "gzip" 之一来请求特定 method。
原始 client methods 不使用 client 级别的 compress 设置。raw_query 和 raw_stream 返回未压缩数据,而 raw_insert 使用其自身的 compression argument 说明已应用于载荷的压缩方式。
ClickHouse Connect 安装时自带 lz4 和 zstd 支持。在 Python 3.14 上,zstd 使用标准库 compression.zstd module。Python 3.10 到 3.13 使用 backports.zstd。如果是未启用 zstd 支持构建的自定义 CPython 3.14+ 解释器,导入仍会成功;zstd 会从可用 methods 中移除,并且只有在显式请求 zstd 时才会引发 error。brotli 是可选项,使用 compress="br" 之前必须单独安装。
对于 ClickHouse workloads,gzip 通常比 lz4 或 zstd 更慢。
HTTP 代理支持
HTTP_PROXY 和 HTTPS_PROXY 环境变量。这些变量会应用于该进程中的每个客户端。若要为每个客户端单独配置代理,请将 http_proxy 或 https_proxy 传递给 get_client 或 get_async_client。
同步客户端使用 urllib3。若要使用 SOCKS 代理,请安装 PySocks,并将 urllib3.contrib.socks.SOCKSProxyManager 作为 pool_mgr 参数传递给 get_client。异步客户端不支持 pool_mgr。
Variant、Dynamic 和 JSON 数据类型
Variant、Dynamic 和 JSON 数据类型。旧版 Object('json') 类型已在 clickhouse-connect 0.14 中移除,且不再受支持。
使用说明
Variant值会按对应的 Python 类型读取。原生插入会根据 Python 值的类型选择成员。- 当多个
Variant成员映射到同一种 Python 类型时,使用clickhouse_connect.datatypes.dynamic.typed_variant(value, "TypeName")包装该值,以显式选择成员。 typedVariant 读取格式会返回TypedVariant(value, type_name)对象,并保留其原始成员类型。可通过query_formats={"Variant": "typed"}启用。Dynamic值会按对应的 Python 类型读取。插入目前通过 String 字符串表示形式发送。JSON值可作为 Python 字典或 JSON object 字符串插入。默认读取格式返回字典;使用"string"读取格式可返回 JSON 字符串。- 选择
Variant、Dynamic或JSON子列的查询会返回该子列的具体类型。
JSON 或 Dynamic 列的 shared-data 区域中的某些值使用了客户端目前尚无法解码的类型。这些值会以原始字节形式返回。这些复杂类型也会走纯 Python 转换路径,因此可能比成熟的标量类型更慢。