2

我在 DataStax Astra 中创建了一个 Cassandra 数据库。我可以在 Python 中连接到它(使用cassandra-driver模块和secure_connect_bundle)。我在我的 Python 应用程序中编写了一些 api 来查询数据库。

我读到我可以使用dsbulk. 我能够在终端中运行以下命令并且它可以工作。

dsbulk load -url data.csv -k foo_keyspace -t foo_table \
-b "secure-connect-afterpay.zip" -u username -p password -header true

然后我尝试使用以下命令在 Python 中运行同一行subprocess

ret = subprocess.run(
    ['dsbulk', 'load', '-url', 'data.csv', '-k', 'foo_keyspace', '-t', 'foo_table', 
     '-b', 'secure-connect-afterpay.zip', '-u', 'username', '-p', 'password', 
     '-header', 'true'],
    capture_output=True
)

但我得到了FileNotFoundError: [Errno 2] No such file or directory: 'dsbulk': 'dsbulk'dsbulk如果我从 Python 运行它,为什么无法识别?


一个相关的问题,依赖subprocess. 有没有更好的方法将批处理数据上传到 Cassandra?

4

1 回答 1

4

我认为这与子进程处理路径的方式有关。尝试将命令指定为绝对路径,或者像“./dsbulk”或“bin/dsbulk”这样的相对路径。

或者,如果您将 DS Bulk 包中的 bin 目录添加到您的 PATH 环境变量中,它将照常工作。

于 2020-08-18T20:47:28.490 回答