【问题标题】:Execute CQL queries from file using the datastax Python Cassandra driver使用 datastax Python Cassandra 驱动程序从文件执行 CQL 查询
【发布时间】:2018-09-26 13:48:06
【问题描述】:

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

【问题讨论】:

    标签: python cassandra cql datastax-python-driver


    【解决方案1】:

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

    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)
    

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

    【讨论】:

      猜你喜欢
      • 2016-11-14
      • 2017-01-02
      • 2017-05-25
      • 2017-08-17
      • 1970-01-01
      • 2016-11-29
      • 2014-03-31
      • 2018-04-21
      • 2013-10-11
      相关资源
      最近更新 更多