如何使用Python驱动程序获取Cassandra集群的名称?

时间:2018-06-15 06:07:12

标签: python cassandra

当我使用cqlsh连接到Cassandra时,它会告诉我我连接到的Cassandra群集的名称。

$ cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh>

(在此示例中,群集名称为Test Cluster,并且在屏幕上显示为蓝色。)

如何使用Python Cassandra驱动程序从我的Python代码中获取群集名称?我希望能够从Session对象获取此信息,但我在the documentation中看不到任何内容。

(我的用例是防止测试对生产Cassandras运行的带和方法的一部分。想法是如果服务器名称表明测试已经以某种方式连接到生产Cassandra,他们可以中止尽快。)

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

您还可以通过查询system.local表找到群集名称(和其他信息):

from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
import sys

hostname=sys.argv[1]
username=sys.argv[2]
password=sys.argv[3]

nodes = []
nodes.append(hostname)
auth_provider = PlainTextAuthProvider(username=username, password=password)
ssl_opts = {'ca_certs':'/home/aaron/.cassandra/mycert.pem'}
cluster = Cluster(nodes,auth_provider=auth_provider,ssl_options=ssl_opts)
session = cluster.connect()

strCQL = "SELECT cluster_name FROM system.local"
pStatement = session.prepare(strCQL)
rows = session.execute(pStatement)

for row in rows:
    print row[0]

session.shutdown()

将其保存为getCluster.py并运行它以查看:

$ python getCluster.py 192.168.0.101 aaron flynnLives
AaronsHomeCluster