使用 python 将 csv 文件上传到 azure blob 存储

Posted

技术标签:

【中文标题】使用 python 将 csv 文件上传到 azure blob 存储【英文标题】:Uploading csv file using python to azure blob storage 【发布时间】:2019-12-01 17:43:17 【问题描述】:

我正在尝试将 csv 文件上传到容器。它不断给我一个错误,说 - 重试策略不允许重试:,HTTP状态代码=未知,异常=HTTPSConnectionPool

这是我的代码 -

from azure.storage.blob import BlockBlobService
block_blob_service = BlockBlobService(account_name='myAccoutName', account_key='myAccountKey')
block_blob_service.get_blob_to_path(container_name='test1', blob_name='pho.csv', file_path = 'C:\\Users\\A9Q5NZZ\\pho.csv')

我是 Python 新手,所以如果你能用简单的语言回答,那将非常有帮助。

忘记上传 CSV 文件,它甚至不允许我查看现有容器中的现有 blob!它为以下代码提供了相同的“重试策略”错误 -

container_name = 'test1'
generator = block_blob_service.list_blobs(container_name)
for blob in generator:
    print("\t Blob name: " + blob.name)

我知道我已经问了两个问题,但我认为错误是一样的。任何帮助表示赞赏。同样,由于我是 Python 新手,所以用更简单的术语解释/代码会很棒!

【问题讨论】:

【参考方案1】:

您使用的方法get_blob_to_path 用于将blob 下载到本地。如果你想将本地文件上传到azure blob存储,你应该使用这个方法block_blob_service.create_blob_from_path(container_name="",blob_name="",file_path="")

示例代码在我身边工作:

from azure.storage.blob import BlockBlobService

block_blob_service = BlockBlobService(account_name='xxx', account_key='xxxx')
block_blob_service.create_blob_from_path(container_name="mycontainier",blob_name="test2.csv",file_path="D:\\temp\\test2.csv")

【讨论】:

谢谢 Ivan,这是我得到的错误 - block_blob_service.create_blob_from_path(container_name="ekaur",blob_name="fleet.xlsx",file_path="C:\\Users\\A9Q5NZZ\\fleet .xlsx") Client-Request-ID=d72393d4-ae1e-11e9-8580-88b111bc9f5c 重试策略不允许重试:,HTTP 状态代码=未知,异常=HTTPConnectionPool(host='***%20.blob。 core.windows.net',端口 = 80):最大重试次数超过 url:/ekaur/fleet.xlsx(由 NewConnectionError(' 引起:无法建立新连接:[Errno 11001] getaddrinfo 失败'))。 也这么说-> NewConnectionError: : Failed toestablish a new connection: [Errno 11001] getaddrinfo failed 在处理上述异常的过程中,又出现了一个异常: MaxRetryError Traceback (最近一次调用最后) C:\Anaconda\lib\site-packages\requests\adapters.py in send(self, request, stream, timeout, verify, cert, proxies) 448 retries=self.max_retries, - -> 449 超时=超时 450) @ApoorvUpadhyaya,您能否尝试创建一个新的存储帐户用于测试目的?我不知道你那边的原因是什么。 @Ivan - 成功了!你的第一个答案是正确的。我最初使用的是 jupyter notebook。但是,当我使用您随我的凭据提供的代码使用 Spyder 时,它起作用了。这很奇怪。也许有一些本地主机问题?非常感谢。我只是希望 blob 存储是存储 csvs 的正确方法:D @ApoorvUpadhyaya,哇,很高兴它解决了。您能否通过关注steps 将其标记为答案?谢谢。

以上是关于使用 python 将 csv 文件上传到 azure blob 存储的主要内容,如果未能解决你的问题,请参考以下文章

使用 python 将 csv 文件加载到 SnowFlake 表中

如何使用 python 将本地 CSV 上传到谷歌大查询

CSV 数据通过 Python 上传到 SQL 表时导致错误

通过 python 将 csv 文件插入 MySQL。运行但数据未填充到表中

使用雪花连接器和 COPY INTO 功能将 csv 上传到雪花时如何指定分隔符

使用 Laravel 将 CSV 文件上传到 MySQL