Lightweight HTTP client for ClickHouse
Project description
ClickHouse HTTP Driver (clickhouse-driver-http)
Lightweight Python HTTP client for ClickHouse with minimal dependencies.
Installation
pip install clickhouse-driver-http
Quick Start
from clickhouse_driver_http import ClickHouseHTTP
# Initialize client (supports both int/string ports)
client = ClickHouseHTTP(
host="localhost", # Required
port=8123, # Default: 8123 (can be string "8123")
username="default", # Default: "default"
password="", # Default: ""
database="default", # Default: "default"
timeout=300, # Default: 300s
max_retries=3, # Default: 3
compression=False # Default: False
)
# Execute query (returns raw tuples)
result = client.execute("SELECT now() AS current_time, version()")
# Get DataFrame (pandas required)
df = client.query_to_df("""
SELECT table, engine
FROM system.tables
WHERE database = currentDatabase()
LIMIT 5
""")
Key Features
- HTTP Interface - No native protocol dependency
- External Tables - Pass data directly in queries
- Smart Batching - Automatic chunking for large results
- Error Resilient - Built-in retry mechanism
- Pandas Support - Direct DataFrame conversion
Advanced Examples
External Tables
data = {
'users': [
{'user_id': 1, 'name': 'Alice'},
{'user_id': 2, 'name': 'Bob'}
]
}
external = [{
'name': 'ext_users',
'structure': [('user_id', 'UInt32'), ('name', 'String')],
'data': data['users']
}]
df = client.query_to_df("""
SELECT u.name, count() as logins
FROM ext_users u
JOIN system.query_log q ON q.user = u.name
GROUP BY u.name
""", external_tables=external)
Batch Processing
# Processes in 100k row batches with auto-retry
large_df = client.query_to_df(
"SELECT * FROM billion_row_table",
batch_size=100000, # Initial batch size
memory_safe=True # Enables memory limits
)
Configuration Reference
| Parameter | Type | Default | Description |
|---|---|---|---|
host |
str | - | Server hostname or IP |
port |
int/str | 8123 | HTTP interface port |
username |
str | "default" | Authentication username |
password |
str | "" | Authentication password |
database |
str | "default" | Default database context |
timeout |
int | 300 | Query timeout in seconds |
max_retries |
int | 3 | Connection retry attempts |
compression |
bool | False | Enable gzip/deflate compression |
verify_ssl |
bool | True | Verify SSL certificates |
License
MIT License - See LICENSE for full text.
Note: Requires Python 3.7+ and
requestspackage. Pandas needed for DataFrame support.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clickhouse-driver-http-0.1.2.tar.gz.
File metadata
- Download URL: clickhouse-driver-http-0.1.2.tar.gz
- Upload date:
- Size: 6.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df657a2a9310875867335d6055b7181abd394e4c9873600b4fe7cb8522ca5894
|
|
| MD5 |
3fe9696fc57242461ed313635232c902
|
|
| BLAKE2b-256 |
6eaf71cbed0636f27b3445c601e426cd367db9a8de91662947f7916d71d919f4
|
File details
Details for the file clickhouse_driver_http-0.1.2-py3-none-any.whl.
File metadata
- Download URL: clickhouse_driver_http-0.1.2-py3-none-any.whl
- Upload date:
- Size: 6.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45d85c645bdd36003dfec8ad2f7e39038678fe174a5fe8a141cb0d77267929c3
|
|
| MD5 |
5e95e3b20072b8ae1cbf1e03532f11f8
|
|
| BLAKE2b-256 |
7a4ab7095de48917aeb1845557be7787241513329c54c05db916a52c2ba17e9f
|