ClickHouse Connect は、中核となるデータベースドライバーであり、幅広い Python アプリケーションとの相互運用性を提供します。
- 主なインターフェイスは、
clickhouse_connect.driverにある同期Clientと、aiohttp ベースのネイティブなAsyncClientです。このドライバーパッケージは、クエリおよび insert のコンテキスト、streaming ヘルパー、DB-API サポート、さらに低レベルの HTTP メソッドも提供します。 clickhouse_connect.datatypesパッケージは、ClickHouse Native バイナリ列指向フォーマットを使用して、ClickHouse の型を serialize および deserialize します。clickhouse_connect.drivercのオプションの Cython 拡張機能は、一般的なシリアライゼーション、変換、buffering の処理を高速化します。拡張機能をビルドできないプラットフォームでも、pure Python の経路は引き続き利用可能です。- このパッケージには PEP 561 の型情報が含まれているため、下流の型チェッカーは、公開ドライバー、DB-API、SQLAlchemy の各インターフェイスに対する annotations を利用できます。
clickhouse_connect.cc_sqlalchemyの SQLAlchemy dialect は、SQLAlchemy Core、スキーマ reflection、ClickHouse 固有のクエリ clauses と table engines、そして Alembic の移行をサポートします。基本的な ORM の reads と inserts は動作しますが、この dialect は完全な unit-of-work ORM の振る舞いではなく、分析ワークロード向けに設計されています。- 中核ドライバーと ClickHouse Connect SQLAlchemy 実装は、ClickHouse を Apache Superset に接続するための推奨される方法です。
ClickHouse Connectデータベース接続、またはclickhousedbSQLAlchemy dialect 接続文字列を使用してください。
このドキュメントは clickhouse-connect 1.6.0 時点の内容です。0.15.x 以前からアップグレードする場合は、1.0 migration guide を参照してください。
要件と互換性
| コンポーネント | サポート対象バージョン |
|---|---|
| Python | 3.10 〜 3.14。3.14t などのフリースレッドビルドは試験的にサポートされています。 |
| ClickHouse | 現在サポート中の ClickHouse リリース。最近の LTS および stable の server リリースに対して CI テストを実施しています。 |
| SQLAlchemy | 1.4.40 以降、3.0 未満 |
| Pandas | 2.x および 3.x |
| Polars | 1.0 以降 |
| aiohttp | 3.9 以降 |
| Platforms | 各 Python バージョン向けに公開されている wheel アーキテクチャ上の Linux、macOS、Windows |
この package には、利用可能な環境向けのコンパイル済み wheel が含まれており、Cython 拡張機能をビルドできない場合は pure Python 実装にフォールバックします。PyArrow は Python 3.10 〜 3.14 をサポートしています。Python 3.14 では PyArrow 22 以降が必要です。
インストール
pip を使用して、PyPI から ClickHouse Connect をインストールします。
pip install clickhouse-connectオプションのインテグレーションは、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 systemsClickHouse Connect は、ソースコードからインストールすることもできます。
- GitHub リポジトリ を
git cloneします。 - プロジェクトのルートディレクトリに移動し、
pip install .を実行します。ビルドシステムにより、オプションの C 拡張機能をコンパイルするための Cython が自動的にインストールされます。
インストールされたバージョンは、clickhouse_connect.__version__ で確認できます。
サポートポリシー
問題を報告する前に、ClickHouse Connect を最新リリースに更新してください。問題の報告は GitHub project に登録してください。ClickHouse Connect は、各ドライバーのリリース時点でアクティブにサポートされている ClickHouse リリースを対象としています。古いサーバーバージョンでも動作することはよくありますが、新しいデータ型やプロトコル機能では、より新しいサーバーが必要になる場合があります。
基本的な使い方
接続情報を確認する
HTTP(S) で ClickHouse に接続するには、次の情報が必要です。
| Parameter(s) | Description |
|---|---|
HOST and PORT |
通常、TLS を使用する場合のポートは 8443、TLS を使用しない場合は 8123 です。 |
DATABASE NAME |
デフォルトでは default という名前のデータベースがあります。接続先のデータベース名を使用してください。 |
USERNAME and PASSWORD |
デフォルトのユーザー名は default です。用途に応じたユーザー名を使用してください。 |
ClickHouse Cloud サービスの詳細は、ClickHouse Cloud コンソールで確認できます。 サービスを選択し、Connect をクリックします。

HTTPS を選択します。接続情報は curl コマンドの例として表示されます。

セルフマネージド ClickHouse を使用している場合、接続情報は ClickHouse 管理者によって設定されます。
接続する
ClickHouse に接続する方法として、次の 2 つの例を示します。
- localhost 上の ClickHouse サーバーに接続する。
- ClickHouse Cloud サービスに接続する。
ClickHouse Connect クライアントインスタンスを使用して、localhost 上の ClickHouseサーバーに接続します:
import clickhouse_connect
client = clickhouse_connect.get_client(
host="localhost",
username="default",
password="password",
)ClickHouse Connect クライアントインスタンスを使用して ClickHouse Cloud サービスに接続します。
import clickhouse_connect
client = clickhouse_connect.get_client(
host="HOSTNAME.clickhouse.cloud",
port=8443,
username="default",
password="your password",
)データベースを操作する
ClickHouse SQL コマンドを実行するには、クライアントの command メソッドを使用します。
client.command(
"CREATE TABLE new_table "
"(key UInt32, value String, metric Float64) "
"ENGINE MergeTree ORDER BY key"
)バッチデータを挿入するには、クライアントの insert メソッドを使用し、行と値で構成された二次元配列を渡します。
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"])ClickHouse SQL を使用してデータを取得するには、client の query メソッドを使用します。
result = client.query("SELECT max(key), avg(metric) FROM new_table")
print(result.result_rows)
# Output: [(2000, -50.9035)]
client.close()埋め込み chDB バックエンド
Experimental の chDB バックエンドでは、HTTP サーバーを介さずに Python プロセス内で ClickHouse クエリを実行します。まず chdb extra をインストールし、interface="chdb" または chdb:// DSN でバックエンドを選択します。
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,)]デフォルトデータベースはメモリ上にあります。永続ストレージを使用するには、path="/data/my_chdb" を渡すか、dsn="chdb:///data/my_chdb" を使用します。chDB では、プロセスごとに指定できる engine path は 1 つだけです。async クライアントや外部データには対応していません。