使用datastax Python Cassandra驱动程序从文件执行CQL查询

时间:2018-04-16 18:14:00

标签: python file cassandra driver cql

我尝试做的是加载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())

1 个答案:

答案 0 :(得分:2)

您可以将文件作为一个整体读取,然后在;字符上拆分,如下面的代码所示。这个解决方案的缺点是它非常原始 - 它不处理注释中可能存在的;字符等。但对于简单的情况,这可能没问题(imho)......

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)

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