我正在连接到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有。是否有可以描述其属性的内置函数?提前谢谢。
答案 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