Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Introduction

ClickHouse Connect est un driver de base de données central qui assure l’interopérabilité avec un large éventail d’applications Python.

  • Les principales interfaces sont le Client synchrone et l’AsyncClient natif basé sur aiohttp dans clickhouse_connect.driver. Le paquet du driver fournit également des contextes de requête et d’insertion, des helpers de streaming, la prise en charge de la DB-API, ainsi que des méthodes HTTP de plus bas niveau.
  • Le paquet clickhouse_connect.datatypes sérialise et désérialise les types ClickHouse à l’aide du format binaire natif en colonnes de ClickHouse.
  • Les extensions Cython optionnelles dans clickhouse_connect.driverc accélèrent les opérations courantes de sérialisation, de conversion et de mise en mémoire tampon. Une implémentation pure Python reste disponible sur les plateformes où les extensions ne peuvent pas être compilées.
  • Le paquet inclut les informations de typage PEP 561, afin que les vérificateurs de types en aval puissent exploiter les annotations pour les interfaces publiques du driver, de la DB-API et de SQLAlchemy.
  • Le dialecte SQLAlchemy dans clickhouse_connect.cc_sqlalchemy prend en charge SQLAlchemy Core, la réflexion de schéma, les clauses de requête spécifiques à ClickHouse et les moteurs de table, ainsi que les migrations Alembic. Les lectures et insertions ORM de base fonctionnent, mais le dialecte est conçu pour des workloads analytiques plutôt que pour un comportement ORM complet de type unit-of-work.
  • Le driver principal et l’implémentation ClickHouse Connect SQLAlchemy sont la méthode privilégiée pour connecter ClickHouse à Apache Superset. Utilisez la connexion de base de données ClickHouse Connect ou la chaîne de connexion du dialecte SQLAlchemy clickhousedb.

Cette documentation est à jour pour clickhouse-connect 1.6.0. Si vous effectuez une mise à niveau depuis la version 0.15.x ou une version antérieure, consultez le guide de migration 1.0.

Exigences et compatibilité

Composant Versions prises en charge
Python 3.10 à 3.14. Les builds free-threaded, comme 3.14t, sont pris en charge à titre expérimental.
ClickHouse Versions de ClickHouse activement prises en charge. Les tests d’intégration continue portent sur des versions récentes du serveur LTS et stables.
SQLAlchemy 1.4.40 ou version ultérieure, inférieure à 3.0
Pandas 2.x et 3.x
Polars 1.0 ou version ultérieure
aiohttp 3.9 ou version ultérieure
Plateformes Linux, macOS et Windows sur les architectures pour lesquelles des wheels sont publiés pour chaque version de Python

Le paquet inclut des wheels compilées lorsqu’elles sont disponibles et bascule sinon vers une implémentation pure Python lorsque les extensions Cython ne peuvent pas être compilées. PyArrow est pris en charge avec Python 3.10 à 3.14. Python 3.14 nécessite PyArrow 22 ou version ultérieure.

Installation

Installez ClickHouse Connect depuis PyPI à l’aide de pip :

pip install clickhouse-connect

Les intégrations facultatives s’installent à l’aide d’extras :

pip install "clickhouse-connect[async]"      # Native asyncio client
pip install "clickhouse-connect[pandas]"     # Pandas
pip install "clickhouse-connect[arrow]"      # PyArrow
pip install "clickhouse-connect[polars]"     # Polars
pip install "clickhouse-connect[sqlalchemy]" # SQLAlchemy dialect
pip install "clickhouse-connect[alembic]"    # SQLAlchemy and Alembic
pip install "clickhouse-connect[chdb]"       # Embedded chDB backend
pip install "clickhouse-connect[tzdata]"     # IANA time zones on minimal systems

ClickHouse Connect peut également être installé à partir du code source :

  • Exécutez git clone sur le dépôt GitHub.
  • Placez-vous à la racine du projet et exécutez pip install .. Le système de build installe automatiquement Cython pour compiler les extensions C optionnelles.

La version installée est accessible via clickhouse_connect.__version__.

Politique de support

Mettez à jour vers la dernière version de ClickHouse Connect avant de signaler un problème. Ouvrez les tickets dans le projet GitHub. ClickHouse Connect cible les versions de ClickHouse activement prises en charge au moment de chaque publication du driver. Il fonctionne souvent avec des versions plus anciennes du serveur, mais les nouveaux types de données et les fonctionnalités plus récentes du protocole peuvent nécessiter un serveur plus récent.

Utilisation de base

Rassemblez vos paramètres de connexion

Pour vous connecter à ClickHouse via HTTP(S), vous avez besoin des informations suivantes :

Paramètre(s) Description
HOST and PORT En général, le port est 8443 lors de l’utilisation de TLS, ou 8123 sans TLS.
DATABASE NAME Par défaut, une base de données nommée default est disponible ; utilisez le nom de la base de données à laquelle vous voulez vous connecter.
USERNAME and PASSWORD Par défaut, le nom d’utilisateur est default. Utilisez le nom d’utilisateur adapté à votre cas d’usage.

Les informations de votre service ClickHouse Cloud sont disponibles dans la console ClickHouse Cloud. Sélectionnez un service, puis cliquez sur Connect :

Bouton Connect du service ClickHouse Cloud

Choisissez HTTPS. Les détails de connexion s’affichent dans un exemple de commande curl.

Détails de connexion HTTPS ClickHouse Cloud

Si vous utilisez ClickHouse autogéré, les détails de connexion sont définis par votre administrateur ClickHouse.

Établir une connexion

Voici deux exemples de connexion à ClickHouse :

  • Connexion à un serveur ClickHouse sur localhost.
  • Connexion à un service ClickHouse Cloud.

Utilisez une instance du client ClickHouse Connect pour vous connecter à un serveur ClickHouse sur localhost :

import clickhouse_connect

client = clickhouse_connect.get_client(
    host="localhost",
    username="default",
    password="password",
)

Utilisez une instance du client ClickHouse Connect pour vous connecter à un service ClickHouse Cloud :

import clickhouse_connect

client = clickhouse_connect.get_client(
    host="HOSTNAME.clickhouse.cloud",
    port=8443,
    username="default",
    password="your password",
)

Interagissez avec votre base de données

Pour exécuter une commande en ClickHouse SQL, utilisez la méthode command du client :

client.command(
    "CREATE TABLE new_table "
    "(key UInt32, value String, metric Float64) "
    "ENGINE MergeTree ORDER BY key"
)

Pour insérer des données par lot, utilisez la méthode insert du client avec un tableau bidimensionnel de lignes et de valeurs :

row1 = [1000, "String Value 1000", 5.233]
row2 = [2000, "String Value 2000", -107.04]
data = [row1, row2]
client.insert("new_table", data, column_names=["key", "value", "metric"])

Pour récupérer des données à l’aide de ClickHouse SQL, utilisez la méthode query du client :

result = client.query("SELECT max(key), avg(metric) FROM new_table")
print(result.result_rows)
# Output: [(2000, -50.9035)]

client.close()

Backend chDB intégré

Le backend chDB expérimental exécute des requêtes ClickHouse au sein du processus Python, sans serveur HTTP. Installez l’extra chdb, puis sélectionnez le backend avec interface="chdb" ou un DSN chdb:// :

import clickhouse_connect

with clickhouse_connect.get_client(interface="chdb") as client:
    result = client.query("SELECT number FROM numbers(3)")
    print(result.result_rows)
    # Output: [(0,), (1,), (2,)]

La base de données par défaut est en mémoire. Passez path="/data/my_chdb" ou utilisez dsn="chdb:///data/my_chdb" pour bénéficier d’un stockage persistant. chDB n’autorise qu’un seul chemin d’engine par processus. Il ne prend pas en charge le client async ni les données externes.

Navigation