当我尝试从python运行以下命令时(我在Python 2.7.6中使用Cassandra Datastax Python驱动程序)
cluster = Cluster([CASSANDRA_HOST], port=CASSANDRA_PORT, cql_version=CASSANDRA_CQL_VERSION, protocol_version=3)
session = cluster.connect(CASSANDRA_KEYSPACE)
NEW_ID = "9999999999"
CQL_FILE_NAME = "FNAME-"+NEW_ID+".cql"
cql_cmd = "SOURCE '~/dev/cql_files/"+ CQL_FILE_NAME + "'"
session.execute(cql_cmd)
我收到以下错误:
File "/usr/local/lib/python2.7/dist-packages/cassandra/cluster.py", line 2012, in execute
return self.execute_async(query, parameters, trace, custom_payload, timeout, execution_profile, paging_state).result()
File "/usr/local/lib/python2.7/dist-packages/cassandra/cluster.py", line 3801, in result
raise self._final_exception
cassandra.protocol.SyntaxException: <Error from server: code=2000 [Syntax error in CQL query] message="line 1:0 no viable alternative at input 'SOURCE' ([SOURCE]...)">
但是当我从cqlsh运行相同的字符串时,它运行正常。关于我应该改变什么的任何想法?谢谢!
字符串如下所示:
"SOURCE '~/dev/cql_files/FNAME-9999999999.cql'"
答案 0 :(得分:0)
SOURCE
是cqlsh独有的命令,它实际上不是CQL规范的一部分,所以你不能使用客户端驱动程序来使用它:
重要说明:本节中介绍的CQL shell命令仅适用于cqlsh shell,无法从驱动程序访问。 CQL shell使用本机协议和Datastax python驱动程序在连接的Cassandra主机上执行CQL命令。有关配置信息,请参阅Cassandra 3.0 cassandra.yaml文件。