Skip to content
Connect to Managed ClickHouse® with Python

Connect to Managed ClickHouse® with Python

To connect to your Managed ClickHouse® service with Python, you can use either the native protocol or the HTTPS protocol.

Connect with the native protocol

Prerequisites

Identify connection information

To run the code for connecting to your service, first identify values of the following variables:

VariableDescription
USERNAMEUser for the ClickHouse connection
PASSWORDPassword for the ClickHouse connection
HOSTHost for the ClickHouse connection
NATIVE_PORTPort for the ClickHouse connection
queryQuery to run, for example SELECT 1

Read the host and the native port from the clickhouse entry of the service components. Ports are assigned per service, so read them from your own service rather than reusing a value from an example:

exo x get-dbaas-service-clickhouse my-clickhouse -z ch-gva-2 \
  -q "components[?component=='clickhouse']"

Connect to the service

Replace the placeholders in the code with meaningful information on your service connection and run the code.

from clickhouse_driver import Client
client = Client(user="USERNAME", password="PASSWORD", host="HOST", port=NATIVE_PORT, secure=True)
print(client.execute("SELECT 1"))

Connect with HTTPS

Prerequisites

Identify connection information

To run the code for connecting to your service, first identify values of the following variables:

VariableDescription
https://HOST:HTTPS_PORTHost and Port for the ClickHouse connection
queryQuery to run, for example SELECT 1
X-ClickHouse-DatabaseDatabase Name, for example system
X-ClickHouse-UserUser for the ClickHouse connection
X-ClickHouse-KeyPassword for the ClickHouse connection
X-ClickHouse-FormatFormat for the output from your query, for example JSONCompact

The HTTPS endpoint listens on a different port than the native protocol. Read the host and the port from the clickhouse_https entry of the service components:

exo x get-dbaas-service-clickhouse my-clickhouse -z ch-gva-2 \
  -q "components[?component=='clickhouse_https']"

Connect to the service

Replace the placeholders in the code with meaningful information on your service connection and run the code.

import requests
response = requests.post(
    "https://HOST:HTTPS_PORT",
    params={"query": "SELECT 1"},
    headers={
        "X-ClickHouse-Database": "system",
        "X-ClickHouse-User": "USERNAME",
        "X-ClickHouse-Key": "PASSWORD",
        "X-ClickHouse-Format": "JSONCompact",
    })
print(response.text)

Now you have your service connection set up and you can proceed to uploading data into your database.

For information on how to connect to the Managed ClickHouse service with the ClickHouse client, see Connect with the ClickHouse client.

Last updated on