首先!!!!!!!!!不要看网上那些乱七八糟的使用clickhouse-driver连接了,真tm难用,端口能搞死你那种,超级烦!能恶心死你那种!但是,我这里就不一样了,非常简单
有能力的推荐直接看官方文档:Python Integration with ClickHouse Connect | ClickHouse Docs
python版本要求:大于3.7的才可以
使用 ClickHouse Connect这个库:
pip install clickhouse-connect
使用 ClickHouse Connect 客户端实例连接到 ClickHouse Cloud 服务:
- import clickhouse_connect
-
- client = clickhouse_connect.get_client(host='服务器ip', port=clickhouse端口, username='用户名', password='密码')
要运行 ClickHouse SQL 命令,请使用客户端command
方法:
client.command('CREATE TABLE new_table (key UInt32, value String, metric Float64) ENGINE MergeTree ORDER BY key')
要插入批处理数据,请使用insert
带有二维行和值数组的客户端方法:
- row1 = [1000, 'String Value 1000', 5.233]
- row2 = [2000, 'String Value 2000', -107.04]
- data = [row1, row2]
- client.insert('new_table', data, column_names=['key', 'value', 'metric'])
要使用 ClickHouse SQL 检索数据,请使用客户端query
方法:
- result = client.query('SELECT max(key), avg(metric) FROM new_table')
- result.result_set
- Out[13]: [(2000, -50.9035)]
也可以,但是你需要知道服务器上的端口号是多少,不能直接使用数据库连接工具里面的端口号:
比如我们的,就只能用32654这个端口,不能用9000,
代码:
- from clickhouse_driver import Client
-
- client = Client(host='服务器地址', port=端口, database='用户名', password='密码')
- sql = 'select * from p_637.d_638 order by id limit 20, 10;'
- res = client.execute(sql)
- print(res)