0
votes

Comment utiliser le filtre sur query_entities

Je souhaite utiliser un filtre sur query_entities pour le stockage de table Azure.

J'ai essayé d'utiliser un filtre comme celui-ci: Table = table_service.query_entities ('MyTableName', filter = "RowKey eq 20")

Table  = table_service.query_entities('MyTableName', filter = "Country eq 
USA")

J'ai eu une exception:

azure.common.AzureHttpError: demande incorrecte {"odata.error": {"code": "InvalidInput", "message": {"lang": "en-US", "value": "A Un opérateur binaire avec des types incompatibles a été détecté. Opérande trouvé types 'Edm.String' et 'Edm.Int32' pour le genre d'opérateur 'Égal'. \ NId de demande: ef3858e7-5002-00d0-617f-0d374a000000 \ nHeure: 2019-05-18T13: 45: 23.6288160Z "}}}

Et j'ai essayé de changer pour ceci:

#coding:utf-8
import os
import json
from azure import *
from azure.storage import *
from azure.storage.table import TableService, Entity

table_service = TableService(account_name='MyAccountName', 
sas_token='MySASToken')
Table  = table_service.query_entities('MyTableName', filter = "Country eq 
USA")
print(Table.items)

Mais j'obtiens SyntaxError: syntaxe invalide


0 commentaires

3 Réponses :


0
votes

Essayez ceci pour le filtre:

RowKey eq '20'

Fondamentalement, le type de données de votre attribut est String , la valeur doit donc être entre guillemets simples.

La même chose s'applique également à votre requête RowKey :

Country eq 'USA'

Vous pouvez trouver plus d'exemples ici: https://docs.microsoft.com/en-us/rest / api / storageservices / querying-tables-and-entity # sample-query-expressions .


0 commentaires

0
votes

Vous avez obtenu la première exception à cause de la comparaison égale: "Country eq États-Unis ".

Vérifiez la description de votre table, dans le message d'exception, il est dit que vous faites "Trouvé les types d'opérande 'Edm.String' et 'Edm.Int32' pour le genre d'opérateur 'Equal'". Le Pays est probablement Edm.Int32 , alors assurez-vous de comparer le même type.

Et la deuxième exception, bien que vous n'ayez pas posté un retraçage complet, je suppose que vous avez supprimé la parenthèse de la dernière ligne.


0 commentaires

0
votes

J'ai essayé ceci et ça marche bien:

Table  = table_service.query_entities('MyTableName', filter = "Country eq 
'USA'")


0 commentaires