You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python访问Docker容器中的ScyllaDB并插入数据?

解决ScyllaDB Docker容器数据插入连接失败的问题

首先,你的问题根源有两个:一是使用了过时的Thrift协议端口(9160),二是依赖的cql库已经被淘汰——现在ScyllaDB(和兼容的Cassandra生态)都推荐使用原生CQL协议(端口9042)来连接操作。

具体解决步骤:

1. 确保Docker容器开放CQL端口

ScyllaDB默认用9042作为CQL连接端口,你需要确认启动容器时已经映射了这个端口。如果之前启动容器时没做端口映射,需要重启容器配置:

# 先停止并移除旧容器(按需操作)
docker stop <你的scylla容器名>
docker rm <你的scylla容器名>

# 重新启动容器,映射9042端口到本地
docker run -d --name scylla -p 9042:9042 scylladb/scylla

如果已经启动容器且不想删除,可以先检查端口映射状态,确认9042端口已对外暴露。

2. 替换为现代Python驱动

cql库基于Thrift协议,如今已停止维护,你需要安装官方推荐的cassandra-driver(Scylla完全兼容该驱动):

pip install cassandra-driver

3. 编写正确的数据插入代码

用新驱动重写你的插入逻辑,示例代码如下:

from cassandra.cluster import Cluster

# 连接到本地的ScyllaDB容器
cluster = Cluster(['localhost'], port=9042)
session = cluster.connect('logs')  # 关联你已创建的keyspace

# 执行插入语句
insert_query = "INSERT INTO event_attend (event_id, event_type, event_user_id) VALUES (131, 'Party', 3156);"
session.execute(insert_query)

print("数据插入成功!")

# 关闭连接
cluster.shutdown()

为什么旧代码会失败?

  • 9160是Thrift协议的端口,ScyllaDB默认已经禁用了Thrift服务,即便映射这个端口也无法建立连接。
  • cql库依赖Thrift协议,属于被废弃的工具,不再适配现代ScyllaDB版本。

内容的提问来源于stack exchange,提问作者John Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:13:17