3

我要做的是加载一个 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())
4

1 回答 1

3

您可以整体读取文件,然后;按照以下代码拆分字符。这个解决方案的缺点是它非常原始 - 它不处理;可能存在于评论等中的字符。但对于简单的情况,这可能没问题(恕我直言)......

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)

更新:如果您使用它来执行架构更改语句(创建/删除/更改),那么您需要在执行每个语句后检查架构协议

于 2018-04-17T09:05:13.707 回答