通过 python API 获取 Windows Azure 存储表名称

Fetching Windows Azure Storage tables names through python API

我正在尝试获取我的 Windows Azure 存储帐户的所有 table 的名称,以便使用 table_service.delete_table('tasktable') 删除它们。

不幸的是,我在 Windows Azure HOWTO 中没有找到任何内容。我只找到了 official REST API documentation and this blog 来解释我想做什么,但它不在 python.

有什么方法可以使用 python 获取所有名字 table 吗?

您可以调用 query_tables() 来枚举存储帐户中的各种表:

from azure.storage import TableService

table_service = TableService(account_name='name', account_key='key')
alltables = table_service.query_tables()
for table in alltables:
    print table.name

你可以在tableservice.py

中看到query_tables()的定义

服务已更新至 list_tables,但可以正常使用。 David Makogon 的上述回答是有效的,但 query_table() 端点现在是 table_list

from azure.cosmosdb.table.tableservice import TableService

table_service = TableService(account_name='name', account_key='key')
alltables = table_service.table_list()
for table in alltables:
    print table.name

Azure Table Storage 在预览版中有一个新的 python 库,可通过 pip 安装。要安装,请使用以下 pip 命令

pip install azure-data-tables

此 SDK 能够针对 Tables 或 Cosmos 端点(尽管有 known issues with Cosmos)。

要查询所有表并随后删除,您可以使用 list_tables 方法,如下所示:

from azure.data.tables import TableServiceClient

table_service_client = TableServiceClient.from_connection_string(my_conn_str)

for table in table_service_client.list_tables():
    table_service_client.delete_table(table.table_name)

您还可以使用 query_tables 方法和 OData 过滤器仅删除表的一个子集:

...
table_filter = "TableName ne 'tableToKeep'"

for table in table_service_client.query_tables(filter=table_filter):
    table_service_client.delete_table(table.table_name)

(仅供参考,我是 Python 团队的 Azure SDK 的 Microsoft 员工)