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

路边两盏灯 2021-01-21 16:01:36
Python 服务 模块 Azure 存储


什么是表存储

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-

 

版权声明
本文为[路边两盏灯]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/lulight/p/14308135.html

  1. LeetCode | 0508. 出现次数最多的子树元素和【Python】
  2. Leetcode | 0508
  3. LeetCode | 0530. 二叉搜索树的最小绝对差【Python】
  4. LeetCode | 0515. 在每个树行中找最大值【Python】
  5. Leetcode | 0530. Minimum absolute difference of binary search tree [Python]
  6. Leetcode | 0515. Find the maximum value in each tree row [Python]
  7. 我来记笔记啦-搭建python虚拟环境
  8. Let me take notes - building a python virtual environment
  9. LeetCode | 0513. 找树左下角的值【Python】
  10. Leetcode | 0513. Find the value in the lower left corner of the tree [Python]
  11. Python OpenCV 泛洪填充,取经之旅第 21 天
  12. Python opencv flood fill, day 21
  13. Python爬虫自学系列(二)
  14. Python crawler self study series (2)
  15. 【python】身份证号码有效性检验
  16. [Python] validity test of ID number
  17. Python ORM - pymysql&sqlalchemy
  18. Python ORM - pymysql&sqlalchemy
  19. centos7 安装python3.8
  20. centos7 安装python3.8
  21. Centos7 installing Python 3.8
  22. Centos7 installing Python 3.8
  23. Django——图书管理系统(六)
  24. Django——图书管理系统(五)
  25. Django -- library management system (6)
  26. Django -- library management system (5)
  27. python批量插入数据小脚本
  28. Python batch insert data script
  29. ZoomEye-python 使用指南
  30. Zoomeye Python User's Guide
  31. 用Python写代码,一分钟搞定一天工作量,同事直呼:好家伙 - 知乎
  32. Using Python to write code, one minute to complete a day's workload, colleagues call: good guy - Zhihu
  33. Python 上的可视化库——PyG2Plot
  34. Pyg2plot: a visualization library on Python
  35. Python 上的可视化库——PyG2Plot
  36. Python实用代码-无限级分类树状结构生成算法
  37. Pyg2plot: a visualization library on Python
  38. Python utility code - infinite classification tree structure generation algorithm
  39. 奇技淫巧,还是正统功夫?Python推导式最全用法
  40. Pandas 的这个知识点,估计 80% 的人都得挂!
  41. 前后端分离有什么了不起,手把手教你用Python爬下来!
  42. 在 Azure 上执行一些简单的 python 工作
  43. 推荐 :利用Python的混合集成机器学习(附链接)
  44. Cunning or orthodox Kung Fu? The most complete usage of Python derivation
  45. It's estimated that 80% of pandas people have to hang up!
  46. What's so great about the separation of front and rear ends? Hand in hand teach you to climb down with Python!
  47. Doing some simple Python work on azure
  48. Recommendation: hybrid integrated machine learning using python (link attached)
  49. Learning PPO algorithm programming from scratch (Python version)
  50. Python OpenCV 图片模糊操作 blur 与 medianBlur
  51. Python OpenCV image blur operation blur and mediablur
  52. 成功解决cv2.error: OpenCV(4.1.2) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: err
  53. Cv2.error solved successfully: opencv (4.1.2) C:: (projects / opencv Python / opencv modules / imgproc / SRC)\ color.cpp:182 : err
  54. Python 中使用 virtualenv 管理虚拟环境
  55. Using virtualenv to manage virtual environment in Python
  56. 如何使用Python执行系统命令?Python学习教程!
  57. How to use Python to execute system commands? Python tutorial!
  58. 快速掌握Python中的循环技术
  59. Quickly grasp the loop technology in Python
  60. Python主流Web框架之Tornado