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

标签 python cassandra cql datastax-python-driver

我想做的是加载一个 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/

相关文章:

python - 在验证集上调整模型的参数

python - 如何使用 __enter__/__exit__ 方法对类进行单元测试?

mysql - Kubernetes:在 Ubuntu 服务器中运行持久性 pods cassandra/mysql

Cassandra 表创建失败,错误请求 : mismatched input

cassandra - 在 Cassandra 中存储时间戳的时区信息

python - 将 Pickle 文件记录为 Mlflow 运行的一部分

python - 具有自定义日期范围的条形图的类型错误

cassandra - SLF4J:无法在 [com.datastax.driver.core.Responses$Result$Rows] 类型的对象上调用 toString()

java - Spring Boot 不记录 CQL 查询

cassandra - Thrift 和 CQL 3 列/行之间的区别