我想做的是加载一个 CQL 文件以重新初始化(删除和创建)键空间中的所有表。
我在 https://datastax.github.io/python-driver/ 搜索了文档但没有找到任何直接的方法来实现这一目标。
SOURCE 不起作用,因为它是一个 cqlsh 命令。我试过读取文件作为输入并运行它,但遇到错误,因为 execute() 只运行一行。我最后的选择是解析文件并运行每个 CQL 命令,但这对于一个简单的请求来说会很麻烦。
目前,我得到的最接近的结果是在读取期间执行文件,如下所示。由于分号,这是我遇到 EOL 问题的地方。
with app.open_resource('schema.cql', mode='r') as f:
db.execute(f.read())
最佳答案
您可以读取整个文件,然后按 ;
字符拆分,如下面的代码所示。这个解决方案的缺点是它非常原始 - 它不处理可能存在于注释等中的 ;
字符。但是对于简单的情况,这可能没问题(恕我直言)...
with open('create_schema.cql', mode='r') as f:
txt = f.read()
stmts = txt.split(r';')
for i in stmts:
stmt = i.strip()
if stmt != '':
print('Executing "' + stmt + '"')
session.execute(stmt)
更新:如果您使用它来执行模式更改语句(创建/删除/更改),那么您需要在执行每条语句后检查模式协议(protocol)
关于python - 使用 datastax Python Cassandra 驱动程序从文件执行 CQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49863780/