• 【Azure 存储服务】Python模块(azure.cosmosdb.table)直接对表存储(Storage Account Table)做操作示例


    什么是表存储

    Azure 表存储是一项用于在云中存储结构化 NoSQL 数据的服务,通过无结构化的设计提供键/属性存储。 因为表存储无固定的数据结构要求,因此可以很容易地随着应用程序需求的发展使数据适应存储。Azure 表存储可存储大量结构化数据。 该服务是一个 NoSQL 数据存储,接受来自 Azure 云内部和外部的通过验证的呼叫。 Azure 表最适合存储结构化非关系型数据。 表存储的常见用途包括:

    • 存储 TB 量级的结构化数据,能够为 Web 规模应用程序提供服务
    • 存储无需复杂联接、外键或存储过程,并且可以对其进行非规范化以实现快速访问的数据集
    • 使用聚集索引快速查询数据
    • 使用 OData 协议和 LINQ 查询以及 WCF 数据服务 .NET 库访问数据

    可以使用表存储来存储和查询大型结构化非关系型数据集,并且表会随着需求的增加而扩展。表存储包含以下组件:

    (内容来源于 Azure: https://docs.azure.cn/zh-cn/cosmos-db/table-storage-overview

    问题描述

    是否有Python module可以直接对Storage Account Table(表存储)进行操作呢? 有的。在查询表存储的Python文档后,它使用的Python module于cosmosDB一样。在代码中引入azure.cosmosdb.table即可。

    from azure.cosmosdb.table.tableservice import TableService
    from azure.cosmosdb.table.models import Entity

    使用PIP安装azure-cosmosdb-table模块。在VS Code中执行: python -m pip install azure-cosmosdb-table

    操作代码

    通过 Python 开始使用 Azure 表存储和 Azure Cosmos DB 表 API

    此示例介绍如何在常见的 Azure 表存储方案中使用用于 Python 的 Azure Cosmos DB 表 SDK。 该 SDK 的名称表示它适合与 Azure Cosmos DB 配合使用,但其实该 SDK 既适合与 Azure Cosmos DB 配合使用,也适合与 Azure 表存储配合使用,只不过每个服务具有唯一的终结点。 本文使用 Python 示例探索这些方案,以演示如何:

    • 创建和删除表
    • 插入和查询实体
    • 修改实体

    Source:https://docs.azure.cn/zh-cn/cosmos-db/table-storage-how-to-use-python?toc=https%3A%2F%2Fdocs.azure.cn%2Fzh-cn%2Fstorage%2Ftables%2Ftoc.json&bc=https%3A%2F%2Fdocs.azure.cn%2Fzh-cn%2Fbread%2Ftoc.json

    Python cosmosdb table模块中包含了对表的所有原子操作。以下代码示例中包含了:

    • 创建表:create_table
    • 将实体添加到表:insert_entity
    • 更新实体:update_entity / insert_or_replace_entity
    • 修改多个实体: with table_service.batch(tablename) as batch
    • 查询实体: get_entity
    • 查询一组实体: table_service.query_entities(tablename, filter="PartitionKey eq 'tasksSeattle'")
    • 查询一部分实体属性:table_service.query_entities(tablename, filter="PartitionKey eq 'tasksSeattle'", select='description')
    • 删除实体:delete_entity
    • 删除表:delete_table

    全部代码:

    from azure.cosmosdb.table.tableservice import TableService
    from azure.cosmosdb.table.models import Entity
    
    ##连接到 Azure 表服务, account_key的内容在Azure Storage Account的门户中获取(Storage Account --> Access Keys)
    table_service = TableService(account_name='you storage account name', account_key='your storage account key', endpoint_suffix='core.chinacloudapi.cn')
    
    ##创建表
    tablename='tasktable2'
    table_service.create_table(tablename)
    
    
    ##将实体添加到表
    task = {'PartitionKey': 'tasksSeattle', 'RowKey': '001',
            'description': 'Take out the trash', 'priority': 200}
    table_service.insert_entity(tablename, task)
    
    ## Same way:
    # task = Entity()
    # task.PartitionKey = 'tasksSeattle'
    # task.RowKey = '002'
    # task.description = 'Wash the car'
    # task.priority = 100
    # table_service.insert_entity(tablename, task)
    
    
    ##更新实体
    print('##更新实体')
    task = {'PartitionKey': 'tasksSeattle', 'RowKey': '001',
            'description': 'Take out the garbage', 'priority': 250}
    table_service.update_entity(tablename, task)
    
    ##如果要更新的实体不存在,更新操作将失败。 如果要存储实体(无论其存在与否)
    print('##如果要更新的实体不存在,更新操作将失败。 如果要存储实体(无论其存在与否)')
    # Replace the entity created earlier
    task = {'PartitionKey': 'tasksSeattle', 'RowKey': '001',
            'description': 'Take out the garbage again', 'priority': 250}
    table_service.insert_or_replace_entity(tablename, task)
    
    # Insert a new entity
    task = {'PartitionKey': 'tasksSeattle', 'RowKey': '003',
            'description': 'Buy detergent', 'priority': 300}
    table_service.insert_or_replace_entity(tablename, task)
    
    
    ##修改多个实体
    print('##修改多个实体')
    task006 = {'PartitionKey': 'tasksSeattle', 'RowKey': '006',
               'description': 'Go grocery shopping', 'priority': 400}
    task007 = {'PartitionKey': 'tasksSeattle', 'RowKey': '007',"MyAddColumn":"you know, thing changed, life goes on.",
               'description': 'Clean the bathroom', 'priority': 100}
    
    with table_service.batch(tablename) as batch:
        batch.insert_entity(task006)
        batch.insert_entity(task007)
    
    
    ##查询条目/实体
    print('##查询条目/实体')
    task = table_service.get_entity(tablename, 'tasksSeattle', '001')
    print(task.description)
    print(task.priority)
    
    ##查询一组条目
    print('##查询一组条目')
    tasks = table_service.query_entities(
        tablename, filter="PartitionKey eq 'tasksSeattle'")
    for task in tasks:
        print(task.description)
        print(task.priority)
    
    
    ##查询一部分实体属性
    print('##查询一部分实体属性')
    tasks = table_service.query_entities(
        tablename, filter="PartitionKey eq 'tasksSeattle'", select='description')
    for task in tasks:
        print(task.description)
    
    # ##删除条目/实体
    # print('##删除条目/实体')
    # table_service.delete_entity(tablename, 'tasksSeattle', '001')
    
    
    # ##删除表
    # print('##删除表')
    # table_service.delete_table(tablename)

    执行结果:

    参考文档

    什么是 Azure 表存储?:https://docs.azure.cn/zh-cn/storage/tables/table-storage-overview

    通过 Python 开始使用 Azure 表存储和 Azure Cosmos DB 表 API: https://docs.azure.cn/zh-cn/cosmos-db/table-storage-how-to-use-python?toc=https%3A%2F%2Fdocs.azure.cn%2Fzh-cn%2Fstorage%2Ftables%2Ftoc.json&bc=https%3A%2F%2Fdocs.azure.cn%2Fzh-cn%2Fbread%2Ftoc.json

    TableService Class: https://docs.microsoft.com/en-us/python/api/azure-cosmosdb-table/azure.cosmosdb.table.tableservice.tableservice?preserve-view=true&view=azure-python#insert-entity-table-name--entity--timeout-none-

  • 相关阅读:
    halconnorm_matrix求矩阵的范数
    Python中的super函数,你熟吗?
    送你5个MindSpore算子使用经验
    带你掌握如何使用CANN 算子ST测试工具msopst
    解析Stream foreach源码
    跟我学Python图像处理丨关于图像金字塔的图像向下取样和向上取样
    编译器优化:何为别名分析
    新消费时代,零售业的进与退?
    华为云宣布全面建设全球初创生态,3年内赋能10000家高潜初创企业
    一招教你如何高效批量导入与更新数据
  • 原文地址:https://www.cnblogs.com/lulight/p/14308135.html
Copyright © 2020-2023  润新知