Python - 如何在Azure表存储中进行范围查询

时间:2016-01-17 14:31:48

标签: python azure azure-table-storage

我很难找到用于创建从python到Azure Table Storage表的范围查询的正确语法。

延续令牌无法帮助我,因为我想定义一个特定范围或RowKeys并仅检索那些。

我一直在尝试以下

rows = table_service.query_entities(
    tableName,
    "PartitionKey eq '6' and RowKey gt '1452702466022' and RowKey lt '1452702466422")

rows = table_service.query_entities(
    'rawpowervalues6', "PartitionKey eq '6'",
    select="RowKey gt '1452702466022' and RowKey lt '1452702466422")

没有运气。我找不到任何关于python范围查询的官方文档。到目前为止,最好的资源是that,但我无法在python中使用它。

2 个答案:

答案 0 :(得分:2)

在您的第一个查询中,您错过了结尾引用:'。您可能想尝试:

rows = table_service.query_entities( \
    tableName, \
    "((PartitionKey eq '6' and RowKey gt '1452702466022') and RowKey lt '1452702466422')")

答案 1 :(得分:2)

根据我的理解,@ Minghan说你的第一个代码是正确的但在;with judge as (SELECT top(1) 1 as x FROM SomeTable ORDER BY 1) SELECT col1, col2, col3 ... FROM TableA WHERE 1 = (select x from judge) UNION ALL SELECT col1, col2, col3 ... FROM TableB WHERE 1 <> (select x from judge) 参数中缺少一个结束引用'是正确的。对于第二个代码,filter参数仅选择返回实体的属性名称,但不对其中的select条件表达式进行编码。

您可以从Github https://github.com/Azure/azure-storage-python/blob/master/azure/storage/table/tableservice.py查看以下函数filter的定义,并结合参考文档Querying Tables and Entities

table_service.query_entites部分
Supported Comparison Operators