我在datastax astra中创建了一个cassandra数据库。我可以用python连接到它(使用 cassandra-driver
模块,以及 secure_connect_bundle
). 我在python应用程序中编写了一些api来查询数据库。
我读到我可以上传csv到它使用 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?
1条答案
按热度按时间5lwkijsr1#
我认为这与子进程处理路径的方式有关。尝试将命令指定为绝对路径或相对路径,如“/dsbulk”或“bin/dsbulk”。
或者,如果您将ds bulk包中的bin目录添加到path环境变量中,它将按您的方式工作。