在python中使用dsbulk加载

问题描述

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

我了解到可以使用dsbulk将csv上传到其中。我可以在终端中运行以下命令,并且可以运行。

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

然后我尝试使用subprocess在Python中运行同一行:

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'。如果我从Python运行dsbulk,为什么无法识别?


一个相关的问题,依靠subprocess可能不是最佳实践。是否有更好的方法将批处理数据上传到Cassandra?

解决方法

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

或者,如果将DS Bulk包中的bin目录添加到PATH环境变量中,它将按需运行。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...