描述Cassandra ColumnFamily

时间:2016-03-23 14:35:51

标签: python cassandra

我正在连接到Cassandra数据库,并试图找出列系列中的条目具有哪些属性。我无法使用cqlsh命令行实用程序。创建连接后,我有:

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

这将打印所有用户的名称。我想知道除了" FIRST_NAME"还有什么其他属性。一个u_item有。是否有可以描述其属性的内置函数?提前谢谢。

1 个答案:

答案 0 :(得分:1)

你在运行哪个版本的Cassandra?如果您想以编程方式查看表,可以尝试从系统表中查询模式:

如果您使用Cassandra> = 3.x +:

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

如果您使用的是Cassandra< = 2.2.x;

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

如何从python脚本执行此Select语句?

如果我在Cassandra 2.2.5上运行,我可以使用上面的代码并使其在Python脚本(cassConnect.py)中工作,如下所示:

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