Когда я подключаюсь к Cassandra с помощью cqlsh
, он сообщает мне имя кластера Cassandra, к cqlsh
я подключен.
$ 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 с помощью драйвера Python Cassandra? Я ожидал, что смогу получить эту информацию из объекта Session
, но я не вижу ничего в документации.
(Мой вариант использования - часть подхода с поясом и фигурными скобками, чтобы предотвратить запуск тестов против производства Cassandras. Идея заключается в том, что если имя сервера указывает, что тесты каким-то образом связаны с производством Cassandra, они могут прервать ASAP.)
Вы также можете найти имя кластера (и другую информацию), system.local
таблицу 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
Cluster
, напримерcluster.metadata.cluster_name
, а не черезSession
, но оно доступно только после того, как вы создали сеанс.