Configurações globais
Há algumas configurações que controlam o comportamento global do ClickHouse Connect. Elas podem ser acessadas no pacotecommon de nível superior:
Configure as configurações de criação do cliente antes de criar clientes. Configurações como IDs de sessão/consulta gerados e a identificação do produto são copiadas para o estado específico do cliente, portanto, alterações globais posteriores não atualizam clientes existentes. As configurações de binding e insert funcionam de modo diferente.
naive_datetime_binding e dict_parameter_format são lidas quando os parâmetros são associados. naive_datetime_insert é lida quando uma coluna em um insert nativo que contém objetos datetime do Python ou strings ISO DateTime64 é serializada. Alterações nessas configurações afetam clientes existentes. Um contexto de insert reutilizável usa o valor atual de naive_datetime_insert em cada insert.Compressão
O ClickHouse Connect oferece suporte à compressão de resposta com lz4, zstd, brotli, gzip e deflate. As inserções Native oferecem suporte a lz4, zstd, brotli e gzip. A compressão reduz a transferência pela rede em troca de maior uso de CPU. Para receber dados comprimidos, a configuraçãoenable_http_compression do servidor ClickHouse deve estar definida como 1, ou o usuário deve ter permissão para alterar essa configuração por consulta.
A compressão é controlada pelo argumento compress de get_client e get_async_client. O valor padrão, True, anuncia todas as codificações de resposta disponíveis e comprime blocos de inserção Native com lz4. Defina compress=False para desativar a compressão ou passe "lz4", "zstd", "br" ou "gzip" para solicitar um método específico.
Os métodos raw do cliente não usam a configuração compress no nível do cliente. raw_query e raw_stream retornam dados não comprimidos, e raw_insert usa seu próprio argumento compression, que descreve a compressão já aplicada ao payload.
O suporte a lz4 e zstd é instalado com o ClickHouse Connect. No Python 3.14, o zstd usa o módulo compression.zstd da biblioteca padrão. Do Python 3.10 ao 3.13, usa-se backports.zstd. Um interpretador CPython 3.14+ personalizado, compilado sem suporte a zstd, ainda pode ser importado; nesse caso, o zstd é removido dos métodos disponíveis, e um erro só é gerado quando zstd é solicitado explicitamente. Brotli é opcional e deve ser instalado separadamente antes de usar compress="br".
Em geral, o gzip é mais lento que lz4 ou zstd para workloads do ClickHouse.
Suporte a proxy HTTP
O ClickHouse Connect reconhece as variáveis de ambiente padrãoHTTP_PROXY e HTTPS_PROXY. Essas variáveis se aplicam a todos os clientes do processo. Para configurar um proxy por cliente, passe http_proxy ou https_proxy para get_client ou get_async_client.
O cliente síncrono usa urllib3. Para usar um proxy SOCKS, instale o PySocks e passe um urllib3.contrib.socks.SOCKSProxyManager como argumento pool_mgr para get_client. pool_mgr não é compatível com o cliente assíncrono.
Tipos de dados Variant, Dynamic e JSON
O ClickHouse Connect oferece suporte aos atuais tiposVariant, Dynamic e JSON do ClickHouse. O tipo legado Object('json') foi removido no clickhouse-connect 0.14 e não é compatível.
Notas de uso
- Os valores de
Variantsão lidos como o tipo Python correspondente. As inserções Native selecionam um membro com base no tipo do valor em Python. - Quando vários membros de
Variantcorrespondem ao mesmo tipo Python, envolva o valor comclickhouse_connect.datatypes.dynamic.typed_variant(value, "TypeName")para selecionar o membro explicitamente. - O formato de leitura
typeddeVariantretorna objetosTypedVariant(value, type_name)e preserva o tipo do membro de origem. Habilite-o comquery_formats={"Variant": "typed"}. - Os valores de
Dynamicsão lidos como o tipo Python correspondente. No momento, os inserts são enviados por meio da representação em string. - Os valores de
JSONpodem ser inseridos como dicionários Python ou strings de objeto JSON. O formato de leitura padrão retorna dicionários; use o formato de leitura"string"para retornar strings JSON. - Consultas que selecionam uma subcoluna de
Variant,DynamicouJSONretornam o tipo concreto da subcoluna.
Variant, Dynamic e JSON convertidos usam a ordem canônica de argumentos do ClickHouse. Os membros de Variant são ordenados e deduplicados pelo nome de tipo canônico, inclusive quando um Variant está aninhado dentro de outro tipo. Os nomes de tipo Dynamic mantêm o argumento max_types, de modo que uma coluna Dynamic(max_types=5) é reportada como Dynamic(max_types=5) em vez de Dynamic. Os typed paths e as regras de skip de JSON são ordenados, os skip paths simples duplicados são removidos, as duplicatas de regular expression são preservadas e os limites padrão explícitos são omitidos. Um tipo JSON convertido expõe as regras decodificadas por meio de skip_paths e skip_regexps. Seu atributo skips contém as expressões canônicas correspondentes do ClickHouse.
Alguns valores armazenados na área shared-data de colunas JSON ou Dynamic usam tipos que o cliente ainda não consegue decodificar. Esses valores são retornados como bytes brutos. Esses tipos complexos também usam o caminho de conversão em pure Python, portanto podem ser mais lentos do que os tipos escalares já estabelecidos.