无网络服务器安装clickhouse-driver

要在无网络服务器上执行一个写有clickhouseSQL语句的python脚本,需要先导入clickhouse-driver,然而无网络服务器无法使用pip、pip3、install、yum。
这不是一个提供解决方法的帖子,这是一个劝你放弃的帖子。因为安装clickhouse-driver需要一些依赖,而安装这些依赖又需要一些别的组件,没有网络的情况下,依靠另一台有网络的服务器下载安装然后copy到无网络服务器会有很多麻烦,与其白费功夫,不如想想其它的办法。
        这里不推荐使用shell脚本运行SQL语句,因为shell里对双引号"、单引号'、漂号`、百分号%都有特殊识别,不是SQL复制到脚本里就能运行的,需要大量的修改。
        如果服务器长期处于无网络状态,或许可以安装一个docker,自己建立一个yum源

——————————————————————————————————————————

更新:安装成功!!!

1.安装旧版本[可忽略,因为安装python3需要使用pip命令,所以需要可能需要安装pip]:pip、python;

2.安装新版本:pip3、python3 

3.检查安装情况:

[root@localhost python3.6]# python3 -V
Python 3.6.12
[root@localhost python3.6]# python -V
Python 2.7.5
[root@localhost python3.6]# pip -V
pip 21.3.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
[root@localhost python3.6]# pip3 -V
pip 21.3.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)

 

<think> 我们已知用户需求:在Ubuntu系统的Docker中运行的ClickHouse服务,使用给定的地址、账号和密码,利用已安装clickhouse-connect 0.8.18和clickhouse-driver 0.2.9,编写一个读取数据库数据的Python demo。 由于用户提到了两个库:clickhouse-connect和clickhouse-driver,我们可以分别给出两个库的示例代码。注意,用户已经指定了版本,所以代码需要兼容这些版本。 首先,我们使用clickhouse-connect库(版本0.8.18): 安装命令:pip install clickhouse-connect==0.8.18 其次,使用clickhouse-driver库(版本0.2.9): 安装命令:pip install clickhouse-driver==0.2.9 注意:用户可能已经安装,所以代码前会说明。 我们将分别编写两个demo。 步骤: 1. 引入库 2. 建立连接 3. 执行查询 4. 获取结果 5. 关闭连接(可选,因为上下文管理器可能会自动关闭) 由于用户是在Docker中运行的ClickHouse,并且给出了IP和端口,以及只读账户和密码。 注意:ClickHouse的默认端口是8123(HTTP)或者9000(TCP),但这里用户指定的是13306,可能是映射的端口。我们需要根据使用的库决定使用哪个端口。 对于clickhouse-connect,它默认使用HTTP端口(通常是8123),但也可以指定端口。而clickhouse-driver则使用TCP端口(默认9000)。但用户给的是13306,因此我们需要明确这个端口对应的是哪个协议? 然而,用户没有说明13306是HTTP还是TCP端口。由于两个库使用的协议不同,所以我们需要用户确认。但用户可能已经映射了,我们可以假设: - 如果使用clickhouse-connect(HTTP协议),那么端口应该是8123的映射,但用户给的是13306,所以我们直接使用13306(因为Docker映射后,宿主机通过映射端口访问)。 - 同样,clickhouse-driver使用TCP,如果用户映射的是TCP端口,那么应该映射9000到13306。 但是,用户给的是同一个端口13306,这可能是用户将ClickHouse的HTTP端口8123映射到了宿主机的13306,或者将TCP端口9000映射到了13306。由于我们不知道用户的具体映射,我们只能假设用户希望我们用这个端口来连接。 实际上,clickhouse-connect既支持HTTP也支持原生TCP(通过设置interface参数),而clickhouse-driver只支持原生TCP。 因此,我们需要分情况处理: 对于clickhouse-connect: - 我们可以尝试使用HTTP接口(默认)连接13306端口,或者使用原生TCP连接13306端口(需要设置interface=&#39;tcp&#39;)。 但是,用户没有明确,所以我们先按照HTTP接口来连接(因为clickhouse-connect默认使用HTTP)。如果不行,再尝试TCP。 不过,为了简化,我们这里提供两种方式,但用户可能需要根据实际情况调整。 我们假设用户映射的是HTTP端口(即8123->13306)或者TCP端口(9000->13306)。 方案1:使用clickhouse-connect(默认HTTP,所以连接13306,协议为HTTP) 方案2:使用clickhouse-driver(使用TCP,所以连接13306,协议为TCP) 因此,我们分别写两个示例。 另外,用户使用的是只读账户,所以只能查询。 我们假设数据库中存在某个表(例如,系统表system.databases)来演示。 查询语句:&#39;SHOW DATABASES&#39; 示例1:使用clickhouse-connect 示例2:使用clickhouse-driver 注意:由于用户是在Ubuntu的Docker中,所以IP是172.16.21.44(宿主机IP)或者如果Docker容器在同一个宿主机上,也可以使用docker容器的IP。但用户给的是172.16.21.44,我们就用这个。 开始编写代码: </think> 以下是一个使用Python读取ClickHouse数据库数据的示例代码,基于您提供的环境配置: ### 使用 clickhouse-connect (0.8.18) 方案 ```python from clickhouse_connect import get_client # 创建连接配置 client = get_client( host=&#39;172.16.21.44&#39;, port=13306, username=&#39;plo&#39;, password=&#39;123456&#39;, secure=False # 禁用HTTPS ) # 执行SQL查询 result = client.query("SHOW DATABASES") # 示例查询 # 处理结果 print("数据库列表:") for row in result.result_rows: print(row[0]) # 关闭连接 client.close() ``` ### 使用 clickhouse-driver (0.2.9) 方案 ```python from clickhouse_driver import Client # 创建客户端实例 client = Client( host=&#39;172.16.21.44&#39;, port=13306, user=&#39;plo&#39;, password=&#39;123456&#39;, database=&#39;default&#39; # 指定默认数据库 ) # 执行查询 result = client.execute("SELECT * FROM system.tables LIMIT 5") # 示例查询 # 输出结果 print("\n表信息样例:") for row in result: print(row) # 关闭连接 client.disconnect() ``` ### 关键配置说明 1. **连接参数**: - `host`: Docker主机IP `172.16.21.44` - `port`: 映射端口 `13306` - 认证:只读账户 `plo/123456` - `secure=False`: 禁用SSL(适用于内网环境) 2. **环境准备**: ```bash # Ubuntu安装依赖 sudo apt-get update sudo apt-get install python3-pip # 安装指定版本库 pip install clickhouse-connect==0.8.18 # 或 pip install clickhouse-driver==0.2.9 ``` 3. **Docker权限验证**: 确保ClickHouse容器已正确映射端口: ```bash docker run -d -p 13306:8123 \ --name clickhouse-server \ clickhouse/clickhouse-server ``` > **注意**:如果遇到连接问题,请检查: > 1. Docker容器的端口映射是否匹配 `-p 13306:8123` > 2. Ubuntu防火墙状态 `sudo ufw status` > 3. ClickHouse用户权限配置(需在ClickHouse中创建只读用户)[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值