Python连接Azure Storage进行数据交互的实现

 更新时间:2023年02月13日 10:27:23   作者:理想国の糕  
本文主要介绍了Python连接Azure Storage进行数据交互的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

做项目的时候,数据被要求存储在云端,需要使用Azure的Storage功能,我自己是用了Python写的项目,所以需要调用Python接口来进行相应的开发工作
记录一下自己的踩坑和代码供自己以后参考(当然Azure一直在更新,还是要不断更新知识库)

默认你有相应的Azure的订阅账号,否则下面的内容都将无法展开

1、需要的前期操作以及Python包

1、你需要安装Azure Client然后登录,在命令行输入az login
2、接着安装azure-storage-blob 、azure-identity两个包

pip install azure-storage-blob azure-identity

2、步骤以及示例代码

本次仅仅涉及到数据的上传下载,一般我们会在所有流程之前先确定一个固定的资源组和Storage account,于是涉及到Python接口的部分主要是在Storage account中创建容器和上传/下载blob

2.1 在Azure门户中创建Storage Account

  • 首先先创建资源组(基础,默认你已经会了)
  • 再创建Storage Account

在这里插入图片描述

这里基本都是默认设置(比较繁琐,按下不表)

2.2 将角色分配给Azure AD用户账户

这一步一开始我跳过了(因为我以为资源组的owner应该是有所有权限的,其实不是),后续就遇到了上传no permission的问题

在 Azure 门户中,使用主搜索栏或左侧导航找到存储帐户。

在存储帐户概述页的左侧菜单中选择“访问控制 (IAM)”。

在“访问控制 (IAM)”页上,选择“角色分配”选项卡。

从顶部菜单中选择“+ 添加”,然后从出现的下拉菜单中选择“添加角色分配”。

使用搜索框将结果筛选为所需角色。 在此示例中,搜索“存储 Blob 数据参与者”并选择匹配的结果,然后选择“下一步”。

在“访问权限分配对象”下,选择“用户、组或服务主体”,然后选择“+ 选择成员”。

在对话框中,搜索 Azure AD 用户名(通常为 user@domain 电子邮件地址),然后选择对话框底部的“选择”。

选择“查看 + 分配”转到最后一页,然后再次选择“查看 + 分配”完成该过程

2.3 Python 调用接口进行上传和下载blob文件

2.3.1 创建container

import os, uuid
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient

from azure.identity import DefaultAzureCredential
account_url = "https://<storage account>.blob.core.windows.net"
default_credential = DefaultAzureCredential()

# Create the BlobServiceClient object
blob_service_client = BlobServiceClient(account_url, credential=default_credential)

# 创建容器
try:
    # 创建一个叫test2的container
    container_name = 'test2'
    print(container_name)
    # Create the container
    container_client = blob_service_client.create_container(container_name)

except Exception as ex:
    print('Exception:')
    print(ex)

可以在Azure门户网页中看到创建成功

在这里插入图片描述

2.3.2 上传blob

# 将blob上传到容器中
try:
    # Create a local directory to hold blob data
    local_path = "./testdir1"
    os.mkdir(local_path)

    # Create a file in the local data directory to upload and download
    local_file_name = "test2" + ".txt"
    upload_file_path = os.path.join(local_path, local_file_name)

    # Write text to the file
    file = open(file=upload_file_path, mode='w')
    file.write("Hello, World!")
    file.close()

    # Create a blob client using the local file name as the name for the blob
    container_name="test2"
    blob_client = blob_service_client.get_blob_client(container=container_name, blob=local_file_name)

    print("\nUploading to Azure Storage as blob:\n\t" + local_file_name)

    # Upload the created file
    with open(file=upload_file_path, mode="rb") as data:
        blob_client.upload_blob(data)

except Exception as ex:
    print('Exception:')
    print(ex)

成功后会显示如下:

在这里插入图片描述

可以用以下接口查看container中的文件

print("\nListing blobs...")

# List the blobs in the container
blob_list = container_client.list_blobs()
for blob in blob_list:
    print("\t" + blob.name)

3、参考资料

Azure Python 接口 Storage相关快速入门官方文档

到此这篇关于Python连接Azure Storage进行数据交互的实现的文章就介绍到这了,更多相关Python Azure Storage数据交互内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python深度学习实战PyQt5信号与槽的连接

    Python深度学习实战PyQt5信号与槽的连接

    本文讲解信号与槽的连接机制,详细示范各种类型的信号/槽连接的实现方法,这是图形用户界面的核心内容。还将介绍面向对象的程序设计,这是图形用户界面的基本思想
    2021-10-10
  • caffe的python接口生成solver文件详解学习

    caffe的python接口生成solver文件详解学习

    这篇文章主要为大家介绍了caffe的python接口生成solver文件详解学习示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Python函数中的作用域规则详解

    Python函数中的作用域规则详解

    这篇文章主要为大家详细介绍了Python的作用域规则,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 解决Python保存文件名太长OSError: [Errno 36] File name too lon

    解决Python保存文件名太长OSError: [Errno 36] File 

    这篇文章主要介绍了解决Python保存文件名太长OSError: [Errno 36] File name too lon问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 关于python安装第三方库的问题与解决方案

    关于python安装第三方库的问题与解决方案

    Python开发中经常遇到第三方库安装困难的问题,速度慢可以使用国内镜像如清华镜像加速,若遇到wheel错误,可以手动下载whl文件进行安装,对于找不到的包,可以尝试在Python的官方包发布网站上进行搜索和下载,本文提供了具体的解决方案和操作步骤
    2024-10-10
  • Python实现希尔排序算法的原理与用法实例分析

    Python实现希尔排序算法的原理与用法实例分析

    这篇文章主要介绍了Python实现希尔排序算法,简单讲述了希尔排序的原理并结合具体实例形式分析了Python希尔排序的具体实现方法与使用技巧,需要的朋友可以参考下
    2017-11-11
  • 使用Python3实现判断函数的圈复杂度

    使用Python3实现判断函数的圈复杂度

    编写函数最重要的原则就是:别写太复杂的函数,那什么样的函数才能算是过于复杂?一般会通过两个标准来判断,长度和圈复杂度,下面我们就来看看如何使用Python判断函数的圈复杂度吧
    2024-04-04
  • 利用Python绘制有趣的万圣节南瓜怪效果

    利用Python绘制有趣的万圣节南瓜怪效果

    这篇文章主要介绍了用Python绘制有趣的万圣节南瓜怪效果,本文实例图文相结合给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • python网络爬虫之如何伪装逃过反爬虫程序的方法

    python网络爬虫之如何伪装逃过反爬虫程序的方法

    本篇文章主要介绍了python网络爬虫之如何伪装逃过反爬虫程序的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • python如何进入交互模式

    python如何进入交互模式

    在本篇内容中小编给大家分享了关于python进入交互模式的方法,对此有需要的朋友们可以跟着学习下。
    2020-07-07

最新评论