2016-03-23 9 views
1

Ich verbinde mich mit einer Cassandra-Datenbank und versuche herauszufinden, welche Attribute ein Eintrag in einer Spaltenfamilie hat. Ich kann das Befehlszeilenprogramm cqlsh nicht verwenden. Nach dem Erstellen der Verbindung habe ich:Beschreiben Cassandra ColumnFamily

myCF = ColumnFamily(myConncetion, "user") 
for u in myCF.get_range(): 
    u_item = u[1] 
    name = u_item.get('FIRST_NAME') 
    print name 

Dies druckt die Namen aller Benutzer. Ich würde gerne wissen, welche anderen Attribute neben "FIRST_NAME" ein u_item hat. Gibt es eine eingebaute Funktion, die ihre Attribute beschreiben kann? Danke im Voraus.

Antwort

1

In welcher Version von Cassandra laufen Sie? Wenn Sie programmatisch durch den Tisch gehen wollen, könnten Sie versuchen, das Schema aus den Systemtabellen abfragen:

Wenn Sie sind auf Cassandra> = 3.x +:

SELECT column_name FROM system_schema.columns 
    WHERE keyspace_name='yourkeyspacename' AND table_name='yourtablename'; 

Wenn Sie auf Cassandra sind < = 2.2.x;

SELECT column_name FROM system.schema_columns 
    WHERE keyspace_name='yourkeyspacename' AND columnfamily_name ='yourtablename'; 

Wie kann ich diese Select-Anweisung aus einem Python-Skript ausführen?

Wenn ich auf Cassandra 2.2.5 renne, kann ich den obigen Code nehmen und es in einem Python-Skript (cassConnect.py) wie folgt funktioniert:

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

import sys 

hostname=sys.argv[1] 
username=sys.argv[2] 
password=sys.argv[3] 
keyspace=sys.argv[4] 
table=sys.argv[5] 

nodes = [] 
nodes.append(hostname) 

auth_provider = PlainTextAuthProvider(username=username, password=password) 
cluster = Cluster(nodes,auth_provider=auth_provider) 
session = cluster.connect(keyspace) 

pStatement = session.prepare(""" 
    SELECT column_name FROM system.schema_columns WHERE keyspace_name=? AND columnfamily_name=?; 
""") 

rows = session.execute(pStatement,[keyspace,table]) 
for row in rows: 
    print row[0] 

$ python cassConnect.py 127.0.0.1 aploetz bacon stackoverflow user 
email 
first 
last 
username 
+0

Wie ich diese Select-Anweisung ausführen kann aus einem Python-Skript? Wie ich bereits erwähnt habe, kann ich das cqlsh Kommandozeilenprogramm – TheScendant

+0

@TheScendant nicht bearbeiten. – Aaron

+0

Danke das ist was ich brauchte! – TheScendant

Verwandte Themen