Cassandra 3.1 Python驱动程序出现'no viable alternative at input describe'错误提示。

12

有些原因导致我无法运行describe keyspaces,尽管我明显是通过3.1版本的Python驱动程序连接到我的Cassandra 3.3主机。其他一些命令似乎可以正常工作。

提前感谢!

    from cassandra.cluster import Cluster
        cluster = Cluster(['192.168.1.53'])
        #session = cluster.connect('node_data')
        session = cluster.connect()
        session.execute('USE node_data')
        rows = session.execute('SELECT * FROM users')
        session.execute('DESCRIBE KEYSPACES;')

---------------------------------------------------------------------------
SyntaxException                           Traceback (most recent call last)
<ipython-input-5-8b1f82917aa9> in <module>()
----> 1 session.execute('DESCRIBE KEYSPACES;')
      2 

/Users/natemarks/.virtualenvs/cassandra/lib/python2.7/site-packages/cassandra/cluster.so in cassandra.cluster.Session.execute (cassandra/cluster.c:27107)()

/Users/natemarks/.virtualenvs/cassandra/lib/python2.7/site-packages/cassandra/cluster.so in cassandra.cluster.ResponseFuture.result (cassandra/cluster.c:60227)()

SyntaxException: <ErrorMessage code=2000 [Syntax error in CQL query] message="line 1:0 no viable alternative at input 'DESCRIBE' ([DESCRIBE]...)">
2个回答

19
DESCRIBE是cqlsh特定的命令,因此它不被驱动程序支持,因为它不被认为是CQL命令。您可以在这里找到完整的cqlsh命令列表。

或者,您可以通过访问Cluster.metadata然后访问keyspaces字典来使用python-driver获取keyspace的模式信息。


1
啊,我之前没有理解那个区别。非常感谢! - Nate Marks

12
cluster.metadata.keyspaces
cluster.metadata.keyspaces['node_data']
cluster.metadata.keyspaces['node_data'].tables
cluster.metadata.keyspaces['node_data'].tables['users']
cluster.metadata.keyspaces['node_data'].tables['users'].columns
cluster.metadata.keyspaces['node_data'].tables['users'].columns['uid']

通过访问集群元数据,您可以获取存储在给定Cassandra集群中的任何keyspace、table和column相关的所有信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接