Skip to main content

Shared ClickHouse connectivity library for Analytic AI services.

Project description

clickhouse_core

Shared ClickHouse connectivity library for Analytic AI services.

What it does

  • Creates ClickHouse clients using a single config model.
  • Supports both TCP (clickhouse-driver) and HTTP (clickhouse-connect).
  • Provides sync and async APIs with consistent return types.
  • Normalizes query results to list-of-dict rows.
  • Supports per-database pooled clients via a dbPoolMap.
  • Logs client creation and query execution.

Install

pip install -r requirements.txt

Usage (TCP)

from clickhouse_core import ClickHouseConfig, get_client

config = ClickHouseConfig(host="clickhouse", port=9000, database="default")
client = get_client(config)
rows = client.fetch_all("SELECT 1 AS one")

Usage (HTTP)

from clickhouse_core import ClickHouseConfig, get_client

config = ClickHouseConfig(host="clickhouse", port=8123, database="default", protocol="http")
client = get_client(config)
rows = client.fetch_all("SELECT 1 AS one")

Async usage

from clickhouse_core import ClickHouseConfig, get_async_client

config = ClickHouseConfig(host="clickhouse", port=9000, database="default")
client = get_async_client(config)
rows = await client.fetch_all("SELECT 1 AS one")

Pool manager (dbPoolMap)

from libs.clickhouse_core import ClickHouseConfig, ClickHousePoolFactory

base_config = ClickHouseConfig.from_env()
db_pool_map = {"default": 2, "analytics": 5}

pool = ClickHousePoolFactory(base_config, db_pool_map).build()

client = pool.get_client("default")
rows = client.fetch_all("SELECT 1")

async_client = pool.get_async_client("analytics")
rows = await async_client.fetch_all("SELECT 1")

Connection checks and per-DB credentials

  • For each DB in dbPoolMap, the pool manager checks connectivity once (using SELECT 1).
  • If connection fails, that DB is skipped and a warning is logged.
  • Per-DB env overrides are supported:
<DBNAME>_USERNAME
<DBNAME>_PASSWORD

If these are not set, the library falls back to CLICKHOUSE_USERNAME and CLICKHOUSE_PASSWORD from the base config.

By default, on-demand clients are allowed for DBs not in dbPoolMap. You can disable this by passing allow_on_demand=False to ClickHousePoolFactory(...).

Configuration

Environment variables supported (prefix CLICKHOUSE_):

  • CLICKHOUSE_HOST
  • CLICKHOUSE_PORT
  • CLICKHOUSE_DATABASE
  • CLICKHOUSE_USERNAME
  • CLICKHOUSE_PASSWORD
  • CLICKHOUSE_PROTOCOL (tcp|http)
  • CLICKHOUSE_SECURE (true/false)
  • CLICKHOUSE_CONNECT_TIMEOUT
  • CLICKHOUSE_SEND_RECEIVE_TIMEOUT
  • CLICKHOUSE_HTTP_VERIFY
  • CLICKHOUSE_COMPRESSION
  • CLICKHOUSE_LOG_NAME

Logging

The library uses Python's standard logging. Configure logging in your service to see client creation and query events. The logger name is taken from CLICKHOUSE_LOG_NAME or defaults to clickhouse_core.

Versioning

See RELEASE.md for the git tag workflow and version bump rules.

Helper scripts:

python scripts/bump_clickhouse_core_version.py patch
python scripts/build_clickhouse_core.py

Build & install (real package)

From libs/clickhouse_core:

python -m pip install --upgrade build
python -m build

Install locally:

pip install dist/clickhouse_core-0.1.0-py3-none-any.whl

Install with HTTP support:

pip install dist/clickhouse_core-0.1.0-py3-none-any.whl[http]

Protected build (Cython .pyd inside wheel)

Set the environment variable before building:

set CLICKHOUSE_CORE_CYTHONIZE=1
python -m build

This produces a platform-specific wheel (e.g., cp312-win_amd64) containing .pyd files.

Monorepo usage

If you are using the library directly from this repo (not installed as a package):

from libs.clickhouse_core import ClickHouseConfig, get_client

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clickhouse_core-0.2.5.tar.gz (24.7 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

clickhouse_core-0.2.5-cp311-cp311-win_amd64.whl (240.4 kB view details)

Uploaded CPython 3.11Windows x86-64

clickhouse_core-0.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

clickhouse_core-0.2.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

clickhouse_core-0.2.5-cp311-cp311-macosx_11_0_arm64.whl (261.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

clickhouse_core-0.2.5-cp311-cp311-macosx_10_9_x86_64.whl (264.1 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

File details

Details for the file clickhouse_core-0.2.5.tar.gz.

File metadata

  • Download URL: clickhouse_core-0.2.5.tar.gz
  • Upload date:
  • Size: 24.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for clickhouse_core-0.2.5.tar.gz
Algorithm Hash digest
SHA256 59b8e22337d19a36b4c082132e6d1f3d4b8916bb62c0c8a8b59cb24453a3ac25
MD5 d9e4069520de7f3c26e7c3a73798cd7d
BLAKE2b-256 36d71eb4f6cd9697a442a7ced66e0cdda143a8c82e905cf76aa7bf8a840c3e8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for clickhouse_core-0.2.5.tar.gz:

Publisher: publish.yml on sreeyenan/clickhouse_core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clickhouse_core-0.2.5-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for clickhouse_core-0.2.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a5051decf4445a33d8841e1d2329035a712e3eeb36c696a5044f3ef9a684fc2b
MD5 846e3673818a652fe779a12e87b3d8e2
BLAKE2b-256 fb471c24b8a1c0ad26101643d58783287f73ecbdebfdb58d7d3fd508683ff229

See more details on using hashes here.

Provenance

The following attestation bundles were made for clickhouse_core-0.2.5-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on sreeyenan/clickhouse_core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clickhouse_core-0.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for clickhouse_core-0.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c9dfc687e1b00241306b38801edce33c0a5c793aaae9c43586a59040f21e240d
MD5 d75c074fae93bb85e4da00cdc1d0c0b7
BLAKE2b-256 9fb8df269e0791dfd87ae4b11cfd385f9d8f6531f4d8afbf86064e7828a4a940

See more details on using hashes here.

Provenance

The following attestation bundles were made for clickhouse_core-0.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on sreeyenan/clickhouse_core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clickhouse_core-0.2.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for clickhouse_core-0.2.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 dffa88fc497819aabc6a8d05a05d8f9b7f428b6c62a18aa19a734b1bf923a345
MD5 974117b241f913370a07a7cef8072984
BLAKE2b-256 cc54d37c63a826faf20b0547659578ae7a1c5a3547763c79b9c765e2f2351602

See more details on using hashes here.

Provenance

The following attestation bundles were made for clickhouse_core-0.2.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish.yml on sreeyenan/clickhouse_core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clickhouse_core-0.2.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for clickhouse_core-0.2.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f1de1e51503bb9c45e774e78b5358b1155a5fdccf351b8ca8787d951152925da
MD5 ad14b83638a2b02aee923ecc752badb3
BLAKE2b-256 4a9cfdef84db94211932d983f408713618016a24921e57a59b4cdef7aeaa787c

See more details on using hashes here.

Provenance

The following attestation bundles were made for clickhouse_core-0.2.5-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on sreeyenan/clickhouse_core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clickhouse_core-0.2.5-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for clickhouse_core-0.2.5-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 aa29f6f5dc4ae58e312204670644d17106ff86f5c61fd6b96c3e1c4d8212ccf3
MD5 9ea988f1874740ba171b916998b1a976
BLAKE2b-256 caf93781f0954636459ae2e4ecb27dd4a58c93aa5e1b4d4a14cfe60b819cf8a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for clickhouse_core-0.2.5-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: publish.yml on sreeyenan/clickhouse_core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page