本文介绍如何使用 ByteHouse HTTP Python Driver 驱动连接并访问 ByteHouse 云数仓。
ByteHouse Connect版本 | 已验证版本:0.8.6 |
---|---|
Python版本 | 已验证版本:Python 3.10 |
您可以通过pip安装驱动。
pip install bytehouse-connect
(可选)您也可以安装cython
包来构建和启用C/Cython优化
pip install cython
可参考下面代码样例连接ByteHouse。
import clickhouse_connect client = clickhouse_connect.get_client( host="tenant-{TENANT_ID}-{REGION}-public.bytehouse.volces.com", port=8123, username="bytehouse", password="{API_KEY}", database="{DATABASE}", compress=False, secure=True, verify=False )
参数 | 配置要点 |
---|---|
host | 配置为ByteHouse的公网连接域名,其中{TENANT_ID}、{REGION}分别为火山引擎主账号的账号ID和ByteHouse的地域信息,您可以在ByteHouse控制台的 租户管理>基本信息>网络信息 中查看对应信息。 |
port | 配置为:8123. |
username & password |
|
database | 配置为连接ByteHouse的数据库名称。 |
secure & verify |
|
连接ByteHouse后,您可以进行建表、数据读写等DDL操作,也可以进行查询设置,以下为简单的操作示例。
使用client. order
方法创建数据表
client.command("CREATE TABLE IF NOT EXISTS test_table (key UInt32, value String, metric Float64) ENGINE = CnchMergeTree() ORDER BY tuple()")
使用client.insert
或 client.query
写入/查询数据
row1 = [1000, 'String Value 1000', 5.233] row2 = [2000, 'String Value 2000', -107.04] data = [row1, row2] client.insert('test_table', data, column_names=['key', 'value', 'metric']) result = client.query('SELECT max(key), avg(metric) FROM test_table')
from clickhouse_connect.driver.tools import insert_file client.command("CREATE TABLE IF NOT EXISTS test_csv_table (key UInt32, value String) ENGINE = CnchMergeTree() ORDER BY tuple()") insert_file(client, table='test_csv_table', file_path='data.csv', fmt='CSV')
您可以通过settings参数设置Session级别参数,例如设置查询时使用的计算组。
client = clickhouse_connect.get_client( host="tenant-{TENANT_ID}-{REGION}-public.bytehouse.volces.com", port=8123, username="bytehouse", password="{API_KEY}", database="{DATABASE}", compress=False, secure=True, verify=False, settings={'virtual_warehouse':'your-vw-id'} )
settings = {'max_execution_time': 1000, 'session_id': 'session_1234'} result = client.query("SELECT 1", settings=settings)