Metadata-Version: 2.1
Name: clickhouse-arrow
Version: 0.2.1
Summary: A minimal client that uses the ClickHouse HTTP API and Apache Arrow.
Home-page: https://github.com/galpin/clickhouse-arrow
Author: Martin Galpin
Author-email: galpin@galpin.com
Requires-Python: >=3.9,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: pyarrow (>=11.0.0,<12.0.0)
Project-URL: Repository, https://github.com/galpin/clickhouse-arrow
Description-Content-Type: text/markdown

# Clickhouse Arrow 🏠 🏹

A minimal [ClickHouse](https://clickhouse.com) client that uses the HTTP API and Apache Arrow.

You should probably use [Clickhouse Connect](https://github.com/ClickHouse/clickhouse-connect) instead.

### Installation

```bash
pip install clickhouse_arrow
```

### Examples

```python
import clickhouse_arrow as ch
import pyarrow as pa

# Initialise a client
client = ch.Client("http://localhost:8123", password="password")

# Create a table
client.execute(
    """
    CREATE TABLE test (
        col1 Int64,
        col2 String
    )
    ENGINE = Memory
    """,
)

# Import a table
table = pa.Table.from_pydict(
    {
        "col1": [1, 2, 3],
        "col2": ["a", "b", "d"],
    },
)
client.insert("test", table)

# Read into a table
table = client.read_table("SELECT * FROM test")
print(table)

# Read iterator of batches
batches = client.read_batches("SELECT * FROM test")
for batch in batches:
    print(batch)

# Use query parameters
table = client.read_table(
    """
    SELECT * FROM test
    WHERE col1 = {value:Int64}
    """,
    params={"value": 2},
)
print(table)

# Use query settings
table = client.read_table(
    "SELECT col2 FROM test",
    settings={"output_format_arrow_string_as_string": 1},
)
print(table["col2"])
```

