Запросы к хранилищу таблиц Azure с использованием Python - чтение целочисленного столбца

Я пытаюсь запросить хранилище таблиц Azure с помощью Python. Столбец типа данных int32 не возвращает свое значение, а возвращает что-то вроде этого azure.storage.table.models.EntityProperty obj ..... Но в случае столбцов строкового типа данных я не сталкиваюсь с такими проблемами. Может кто-нибудь мне помочь?

Столбец Pos в скрипте ниже представляет собой целочисленный столбец в таблице.

queryfilter = "startDateTime gt datetime'%s' and temp eq '%s'" % (datefilter, temp)

task = table_service.query_entities(azureTable, filter=queryfilter)

for t in task: 
   print(t.Pos)

person AngiSen    schedule 24.04.2018    source источник
comment
где твой код?   -  person Sraw    schedule 24.04.2018
comment
Привет, Sraw, скрипт добавлен   -  person AngiSen    schedule 24.04.2018
comment
Вы можете изменить azureTable на 'azureTable', а затем попробуйте.   -  person Joy Wang    schedule 24.04.2018
comment
Привет, Джой, приведенный выше сценарий работает для всех других столбцов строкового типа из azureTable, кроме столбца Pos типа int. azureTable - это параметр, переданный при запросе. Я поменял его цитатами, но не повезло   -  person AngiSen    schedule 24.04.2018


Ответы (2)


Посмотрите документацию здесь: https://docs.microsoft.com/en-us/python/api/azure.cosmosdb.table.models.entityproperty?view=azure-python, можете ли вы попробовать следующее?

for t in task: print(t.Pos.value)
person Gaurav Mantri    schedule 24.04.2018

В хранилище таблиц Azure есть новая библиотека Python в предварительной версии, которая доступна для установки через pip. Для установки используйте следующую команду pip

pip install azure-data-tables

Этот SDK может нацеливаться на конечную точку Tables или Cosmos (хотя с Cosmos есть известные проблемы).

В новой библиотеке используется аналогичный TableEntity, который является типом значения ключа, унаследованным от словаря Python, значение такое же EntityProperty. Есть два способа получить доступ к свойствам объекта. Если тип Int32 (целочисленный тип по умолчанию) или String, к ним можно получить доступ:

my_value = entity.my_key  # direct access
my_value = entity['my_key'] # same access pattern as a dict

Если EntityProperty относится к типу INT32 или BINARY, вам придется использовать нотацию .value:

my_value = entity.my_key.value  # direct access
my_value = entity['my_key'].value # same access pattern as a dict

К вашему сведению, я работаю штатным инженером в Microsoft в команде Azure SDK для Python.

person spkane31    schedule 04.01.2021