我在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?
发布于 2020-08-19 04:47:28
我认为这与子进程处理路径的方式有关。尝试将命令指定为绝对路径或相对路径,如"./dsbulk“或"bin/dsbulk”。
或者,如果将DS批量软件包中的bin目录添加到PATH环境变量中,它将按您的方式工作。
https://stackoverflow.com/questions/63476033
复制相似问题