Saltar al contenido principal
Se recomienda usar argumentos con nombre en la mayoría de los métodos de la API, dado el número de argumentos posibles, la mayoría de ellos opcionales.Los métodos que no se documentan aquí no se consideran parte de la API y pueden eliminarse o modificarse.

Inicialización del cliente

La clase clickhouse_connect.driver.client proporciona la interfaz principal entre una aplicación de Python y el servidor de bases de datos ClickHouse. Utilice la función clickhouse_connect.get_client para obtener una instancia de Client, que acepta los siguientes argumentos:

Argumentos de conexión

Argumentos de HTTPS/TLS

Argumento settings

Por último, el argumento settings de get_client se utiliza para pasar al servidor ajustes de ClickHouse adicionales en cada solicitud del cliente. Ten en cuenta que, en la mayoría de los casos, los usuarios con acceso readonly=1 no pueden modificar los ajustes enviados con una consulta, por lo que ClickHouse Connect omitirá esos ajustes en la solicitud final y registrará una advertencia. Los siguientes ajustes solo se aplican a las consultas/sesiones HTTP que usa ClickHouse Connect y no están documentados como ajustes generales de ClickHouse. Para ver otros ajustes de ClickHouse que pueden enviarse con cada consulta, consulta la documentación de ClickHouse.

Ejemplos de creación de clientes

  • Sin parámetros, un cliente de ClickHouse Connect se conectará al puerto HTTP predeterminado en localhost, con el usuario default y sin contraseña:
  • Conectarse a un servidor externo de ClickHouse con HTTPS
  • Conectarse con un ID de sesión y otros parámetros de conexión personalizados, así como ajustes de ClickHouse.

Ciclo de vida del cliente y buenas prácticas

Crear un cliente de ClickHouse Connect es una operación costosa, ya que implica establecer una conexión, recuperar metadatos del servidor e inicializar el ajuste. Siga estas buenas prácticas para lograr un rendimiento óptimo:

Principios básicos

  • Reutiliza los clientes: Crea los clientes una sola vez al iniciar la aplicación y reutilízalos durante toda su vida útil
  • Evita crearlos con frecuencia: No crees un cliente nuevo para cada consulta o solicitud (esto desperdicia cientos de milisegundos por operación)
  • Limpia correctamente: Cierra siempre los clientes al apagar la aplicación para liberar los recursos del pool de conexiones
  • Compártelos cuando sea posible: Un solo cliente puede gestionar muchas consultas concurrentes a través de su pool de conexiones (consulta las notas sobre hilos más abajo)

Patrones básicos

✅ Correcto: reutiliza un único cliente
❌ Incorrecto: crear clientes repetidamente

Aplicaciones multihilo

Las instancias de cliente NO son seguras para subprocesos cuando se usan ID de sesión. De forma predeterminada, los clientes tienen un ID de sesión generado automáticamente, y las consultas concurrentes dentro de la misma sesión provocarán un ProgrammingError.
Para compartir un cliente entre hilos de forma segura:
Alternativa para las sesiones: Si necesita sesiones (p. ej., para tablas temporales), cree un cliente independiente por hilo:

Limpieza adecuada

Cierra siempre los clientes al apagar el sistema. Ten en cuenta que client.close() elimina el cliente y cierra las conexiones HTTP agrupadas solo cuando el cliente tiene su propio administrador de pools (por ejemplo, cuando se crea con opciones personalizadas de TLS/proxy). Para el pool compartido predeterminado, usa client.close_connections() para limpiar proactivamente los sockets; de lo contrario, las conexiones se recuperan automáticamente por expiración por inactividad y al salir del proceso.
O bien, usa un administrador de contexto:

Cuándo usar varios clientes

Varios clientes son adecuados para:
  • Servidores diferentes: un cliente por servidor o clúster de ClickHouse
  • Credenciales diferentes: clientes separados para distintos usuarios o niveles de acceso
  • Bases de datos diferentes: cuando necesite trabajar con varias bases de datos
  • Sesiones aisladas: cuando necesite sesiones separadas para tablas temporales o ajustes específicos de la sesión
  • Aislamiento por hilo: cuando los hilos necesiten sesiones independientes (como se muestra arriba)

Argumentos comunes de los métodos

Varios métodos del cliente usan uno o ambos argumentos comunes, parameters y settings. A continuación se describen estos argumentos de palabra clave.

Argumento parameters

Los métodos query* y command del cliente ClickHouse Connect aceptan un argumento opcional de palabra clave parameters, que se utiliza para vincular expresiones de Python a una expresión de valor de ClickHouse. Hay dos tipos de vinculación disponibles.

Vinculación en el servidor

ClickHouse admite la vinculación en el servidor para la mayoría de los valores de una consulta, donde el valor vinculado se envía por separado de la consulta como un parámetro de consulta HTTP. ClickHouse Connect añadirá los parámetros de consulta correspondientes si detecta una expresión de vinculación con el formato {<name>:<datatype>}. Para la vinculación en el servidor, el argumento parameters debe ser un diccionario de Python.
  • Vinculación en el servidor con un diccionario de Python, un valor DateTime y un valor de cadena
Esto genera la siguiente consulta en el servidor:
La vinculación en el servidor solo es compatible (por el servidor de ClickHouse) con consultas SELECT. No funciona con ALTER, DELETE, INSERT ni con otros tipos de consultas. Esto puede cambiar en el futuro; consulta https://github.com/ClickHouse/ClickHouse/issues/42092.

Vinculación en el cliente

ClickHouse Connect también admite la vinculación de parámetros en el cliente, lo que permite una mayor flexibilidad al generar consultas SQL con plantillas. Para la vinculación en el cliente, el argumento parameters debe ser un diccionario o una secuencia. La vinculación en el cliente utiliza el formato de cadenas estilo “printf” de Python para la sustitución de parámetros. Ten en cuenta que, a diferencia de la vinculación en el servidor, la vinculación en el cliente no funciona con identificadores de bases de datos, como nombres de bases de datos, tablas o columnas, ya que el formato de estilo Python no puede distinguir entre los distintos tipos de cadenas y estos deben formatearse de forma diferente (backticks o comillas dobles para identificadores de bases de datos, comillas simples para valores de datos).
  • Ejemplo con un diccionario de Python, un valor DateTime y escape de cadenas
Esto genera la siguiente consulta en el servidor:
  • Ejemplo con una secuencia de Python (Tuple), Float64 e IPv4Address
Esto genera la siguiente consulta en el servidor:
Para vincular argumentos DateTime64 (tipos de ClickHouse con precisión de fracciones de segundo) se requiere uno de estos dos enfoques personalizados:
  • Envuelva el valor datetime.datetime de Python en la nueva clase DT64Param, por ejemplo:
    • Si usa un diccionario de valores de parámetros, añada la cadena _64 al nombre del parámetro

Argumento settings

Todos los métodos principales “insert” y “select” del cliente ClickHouse Connect aceptan un argumento de palabra clave opcional, settings, para pasar ajustes de usuario del servidor ClickHouse a la sentencia SQL incluida. El argumento settings debe ser un diccionario. Cada elemento debe contener el nombre de un ajuste de ClickHouse y su valor asociado. Ten en cuenta que los valores se convertirán en cadenas al enviarse al servidor como parámetros de consulta. Al igual que con los ajustes a nivel de cliente, ClickHouse Connect descartará cualquier ajuste que el servidor marque como readonly=1, con el correspondiente mensaje de log. Los ajustes que se aplican solo a consultas a través de la interfaz HTTP de ClickHouse siempre son válidos. Esos ajustes se describen en la API get_client. Ejemplo de uso de ajustes de ClickHouse:

Método command del cliente

Use el método Client.command para enviar consultas SQL al servidor de ClickHouse que normalmente no devuelven datos o que devuelven un único valor primitivo o de tipo Array, en lugar de un conjunto de datos completo. Este método acepta los siguientes parámetros:

Ejemplos del comando

Sentencias DDL

Consultas sencillas que devuelven valores individuales

Comandos con parámetros

Comandos con ajustes

Método query del cliente

El método Client.query es la forma principal de recuperar un único conjunto de datos “por lote” del servidor de ClickHouse. Utiliza el formato nativo de ClickHouse sobre HTTP para transmitir grandes conjuntos de datos (hasta aproximadamente un millón de filas) de forma eficiente. Este método acepta los siguientes parámetros:

Ejemplos de consultas

Consulta básica

Acceder a los resultados de la consulta

Consulta con parámetros en el cliente

Consulta con parámetros del servidor

Consulta con ajustes

El objeto QueryResult

El método base query devuelve un objeto QueryResult con las siguientes propiedades públicas:
  • result_rows — Una matriz de los datos devueltos en forma de una secuencia de filas, donde cada elemento de fila es una secuencia de valores de columna.
  • result_columns — Una matriz de los datos devueltos en forma de una secuencia de columnas, donde cada elemento de columna es una secuencia de los valores de fila de esa columna
  • column_names — Una tupla de cadenas que representa los nombres de las columnas en el result_set
  • column_types — Una tupla de instancias de ClickHouseType que representa el tipo de dato de ClickHouse de cada columna en result_columns
  • query_id — El query_id de ClickHouse (útil para examinar la consulta en la tabla system.query_log)
  • summary — Cualquier dato devuelto por el encabezado de respuesta HTTP X-ClickHouse-Summary
  • first_item — Una propiedad práctica para recuperar la primera fila de la respuesta como un diccionario (las claves son nombres de columna)
  • first_row — Una propiedad práctica para devolver la primera fila del resultado
  • column_block_stream — Un generador de resultados de consultas en formato orientado a columnas. No se debe hacer referencia a esta propiedad directamente (véase más abajo).
  • row_block_stream — Un generador de resultados de consultas en formato orientado a filas. No se debe hacer referencia a esta propiedad directamente (véase más abajo).
  • rows_stream — Un generador de resultados de consultas que produce una sola fila por invocación. No se debe hacer referencia a esta propiedad directamente (véase más abajo).
  • summary — Como se describe en el método command, un diccionario de información resumida devuelta por ClickHouse
Las propiedades *_stream devuelven un Context de Python que puede usarse como iterador para los datos devueltos. Solo se debe acceder a ellas indirectamente mediante los métodos *_stream del cliente. Los detalles completos del streaming de resultados de consultas (mediante objetos StreamContext) se describen en Consultas avanzadas (consultas en streaming).

Consumo de resultados de consultas con NumPy, Pandas o Arrow

ClickHouse Connect proporciona métodos de consulta específicos para trabajar con los formatos de datos NumPy, Pandas y Arrow. Para obtener información detallada sobre cómo usar estos métodos, incluidos ejemplos, streaming y gestión avanzada de tipos, consulte Consultas avanzadas (consultas de NumPy, Pandas y Arrow).

Métodos del cliente para consultas en streaming

Para transmitir grandes conjuntos de resultados, ClickHouse Connect ofrece varios métodos de streaming. Consulta Consultas avanzadas (Streaming Queries) para obtener más información y ejemplos.

Método insert del cliente

Para el caso de uso habitual de insertar varios registros en ClickHouse, está el método Client.insert. Acepta los siguientes parámetros: Este método devuelve un diccionario de “resumen de la consulta”, tal como se describe en el método “command”. Se generará una excepción si la inserción falla por cualquier motivo. Para métodos de inserción especializados que funcionan con Pandas DataFrames, tablas PyArrow y DataFrames respaldados por Arrow, consulte Inserciones avanzadas (Métodos de inserción especializados).
Una matriz de NumPy es una Sequence of Sequences válida y puede usarse como argumento data para el método principal insert, por lo que no se requiere un método especializado.

Ejemplos

Los ejemplos a continuación suponen que existe una tabla users con el esquema (id UInt32, name String, age UInt8).

Inserción básica por filas

Inserción orientada a columnas

Inserción con tipos explícitos de columnas

Insertar en una base de datos específica

Inserciones desde archivos

Para insertar datos directamente desde archivos en tablas de ClickHouse, consulte Inserción avanzada (Inserciones desde archivos).

API en bruto

Para casos de uso avanzados que requieran acceso directo a las interfaces HTTP de ClickHouse sin transformaciones de tipos, consulte Uso avanzado (Raw API).

Clases y funciones de utilidad

Las siguientes clases y funciones también se consideran parte de la API “pública” de clickhouse-connect y, al igual que las clases y los métodos documentados anteriormente, son estables entre versiones menores. Los cambios incompatibles en estas clases y funciones solo se producirán en una versión menor (no en una de parche) y permanecerán disponibles como obsoletas durante al menos una versión menor.

Excepciones

Todas las excepciones personalizadas (incluidas las definidas en la especificación DB API 2.0) se definen en el módulo clickhouse_connect.driver.exceptions. Las excepciones que detecte el driver utilizarán uno de estos tipos.

Utilidades de ClickHouse SQL

Las funciones y la clase DT64Param del módulo clickhouse_connect.driver.binding pueden usarse para construir y escapar correctamente consultas en ClickHouse SQL. Del mismo modo, las funciones del módulo clickhouse_connect.driver.parser pueden usarse para analizar nombres de tipos de datos de ClickHouse.

Casos de uso multihilo, multiproceso y asíncronos/orientados a eventos

Para obtener información sobre el uso de ClickHouse Connect en aplicaciones multihilo, multiproceso y asíncronas/orientadas a eventos, consulte Uso avanzado (casos de uso multihilo, multiproceso y asíncronos/orientados a eventos).

Wrapper de AsyncClient

Para obtener información sobre cómo usar el wrapper de AsyncClient en entornos de asyncio, consulte Uso avanzado (wrapper de AsyncClient).

Gestión de los IDs de sesión de ClickHouse

Para obtener información sobre cómo gestionar los IDs de sesión de ClickHouse en aplicaciones multihilo o concurrentes, consulte Uso avanzado (Gestión de los IDs de sesión de ClickHouse).

Personalización del pool de conexiones HTTP

Para obtener información sobre cómo personalizar el pool de conexiones HTTP para aplicaciones grandes con varios hilos, consulte Uso avanzado (Personalización del pool de conexiones HTTP).
Última modificación el 10 de junio de 2026