开发者

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

开发者 https://www.devze.com 2023-02-14 09:25 出处:网络 作者: 理想国の糕
目录1、需要的前期操作以及python包2、步骤以及示例代码2.1 在Azure门户中创建Storage Account2.2 将角色分配给Azure AD用户账户2.3 Python 调用接口进行上传和下载blob文件3、参考资料做项目的时候,数据被要求存储
目录
  • 1、需要的前期操作以及python包
  • 2、步骤以及示例代码
    • 2.1 在Azure门户中创建Storage Account
    • 2.2 将角色分配给Azure AD用户账户
    • 2.3 Python 调用接口进行上传和下载blob文件
  • 3、参考资料

    做项目的时候,数据被要求存储在云端,需要使用Azure的Storage功能,我自己是用了Python写的项目,所以需要调用Python接口来进行相应的开发工作

    记录一下自己的踩坑和代码供自己以后参考(当然Azure一直在更新,还是要不断更新知识库)

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

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

    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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2.3 Python 调用接口进www.devze.com行上传和下载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:js')
        print(ex)
    

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

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

    2.3.2 上传blob

    # 将blob上传到容器中
    try:
        # Create a local directory to hold blob开发者_Python入门 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_seHvwHnNQEOdrvice_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)
    

    成功后会显示如下:

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

    可以用以下接口查看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数据交互内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号