我有一个python脚本,我想用它在服务器上进行远程调用,连接到Cassandra CLI,并执行命令来创建键空间。我做的其中一个尝试是这样的:
connect="cassandra-cli -host localhost -port 1960;"
create_keyspace="CREATE KEYSPACE someguy;"
exit="exit;"
final = Popen("{}; {}; {}".format(connect, create_keyspace, exit), shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
stdout, nothing = final.communicate()
通过各种解决方案,我找不到我需要的东西。例如,上面的代码抛出一个“/ bin / sh:1:CREATE:not found”,我认为意味着它没有在CLI命令行上执行CREATE语句。
非常感谢任何/所有帮助!谢谢!
答案 0 :(得分:0)
试一试。我的机器上没有安装cassandra-cli,所以我自己无法测试。
from subprocess import check_output
from tempfile import NamedTemporaryFile
CASSANDRA_CMD = 'cassandra-cli -host localhost -port 1960 -f '
def cassandra(commands):
with NamedTemporaryFile() as f:
f.write(';\n'.join(commands))
f.flush()
return check_output(CASSANDRA_CMD + f.name, shell=True)
cassandra(['CREATE KEYSPACE someguy', 'exit'])
正如您在下面的评论中提到的那样pycassa a Python client for Cassandra无法使用,因为它似乎不支持create语句。