本文介绍如何在 Python 开发环境连接并访问 ByteHouse 云数仓。
ByteHouse 兼容下列开源 ClickHouse Python Driver 程序:
说明
需要 Python 3.7 或更高版本的支持。
访问 ByteHouse 所需的连接信息,请参考 获取连接信息 获取。
可以通过如下命令,获取最新发布版本的 clickhouse-driver。
pip3 install clickhouse-driver
开发版本通过如下命令安装。
pip3 install git+https://github.com/mymarilyn/clickhouse-driver@master#egg=clickhouse-driver
根据您的 Python 版本,您可能需要安装以下依赖项:
本章节介绍通过 mymarilyn/clickhouse-driver 程序连接 ByteHouse 的基本用法,您可以在程序 Github 主页 获取最新的文档和发布版本信息。
可参考下面代码样例设置 ByteHouse 连接信息,具体内容可以根据 前提条件 中获取的信息填写。
clickhouse://bytehouse:{API_KEY}@{HOST}:{PORT}/?secure=true
请参阅以下基本查询的示例代码。按照获取 ByteHouse 连接信息中信息替换下面的 HOST、PORT 和 API_KEY 字段。
from clickhouse_driver import Client as ChClient def CH_driver_client(API_KEY, HOST, PORT): client = ChClient.from_url(f'clickhouse://bytehouse:{API_KEY}@{HOST}:{PORT}/?secure=true') return client if __name__ == '__main__': PORT = 19000 HOST = 'your_tenant_host' API_KEY = 'your_api_key' client = CH_driver_client(API_KEY, HOST, PORT) ### DDL Query client.execute("CREATE DATABASE IF NOT EXISTS demo_db_py") client.execute("CREATE TABLE IF NOT EXISTS demo_db_py.demo_tb (id INT) ENGINE=CnchMergeTree() ORDER BY tuple()") ### DML Query print("Inserting data as values...") client.execute("INSERT INTO demo_db_py.demo_tb VALUES", [[111], [42], [12]]) json_data = [ { "id": 86, }, { "id": 90, } ] print("Inserting data from JSON...") client.execute('INSERT INTO demo_db_py.demo_tb FORMAT JSON', json_data) ### DQL Query print("Querying data...") result_set = client.execute("SELECT * FROM demo_db_py.demo_tb") for result in result_set: print(result) # client.execute("DROP DATABASE IF EXISTS demo_db_py")