J'utilise boto.dynamodb2
, Et il semble que je puisse utiliser Table.query_count()
. Cependant, il avait levé une exception quand aucun filtre de requête n'est appliqué.
Que puis-je faire pour résoudre ce problème?
BTW, où est le document des filtres que boto.dynamodb2.table.Table.Query
Peut utiliser? J'ai essayé de le chercher mais je n'ai rien trouvé.
Il existe deux façons d'obtenir un nombre de lignes dans DynamoDB.
La première consiste à effectuer une analyse complète de la table et à compter les lignes au fur et à mesure. Pour une table de toute taille raisonnable, c'est généralement une idée horrible car elle consommera tout votre débit de lecture provisionné.
L'autre façon consiste à utiliser la requête Describe Table pour obtenir une estimation du nombre de lignes dans la table. Cela reviendra instantanément, mais ne sera mis à jour que périodiquement selon la documentation AWS.
Le nombre d'éléments dans l'index spécifié. DynamoDB met à jour cette valeur toutes les six heures environ. Les modifications récentes peuvent ne pas être reflétées dans cette valeur.
Selon la documentation boto
"Le nombre d'éléments dans le tableau spécifié. DynamoDB met à jour cette valeur toutes les six heures environ. Les modifications récentes peuvent ne pas être reflétées dans cette valeur."
import boto3
dynamoDBResource = boto3.resource('dynamodb')
table = dynamoDBResource.Table('tableName')
print(table.item_count)
ou vous pouvez utiliser DescribeTable :
import boto3
dynamoDBClient = boto3.client('dynamodb')
table = dynamoDBClient.describe_table(
TableName='tableName'
)
print(table)
Si vous souhaitez compter le nombre d'articles:
import boto3
client = boto3.client('dynamodb','us-east-1')
response = client.describe_table(TableName='test')
print(response['Table']['ItemCount'])
#ItemCount (integer) --The number of items in the specified table.
# DynamoDB updates this value approximately every six hours.
# Recent changes might not be reflected in this value.
Ref: Boto Documentation (sous ItemCount dans describe_table ())
Vous pouvez l'utiliser pour obtenir le nombre d'éléments de table entiers
from boto.dynamodb2.table import Table
dynamodb_table = Table('Users')
dynamodb_table.count() # updated roughly 6 hours
Reportez-vous ici: http://boto.cloudhackers.com/en/latest/ref/dynamodb2.html#module-boto.dynamodb2.table
la méthode query_count renverra le nombre d'éléments en fonction des index que vous fournissez.
Par exemple,
from boto.dynamodb2.table import Table
dynamodb_table = Table('Users')
print dynamodb_table.query_count(
index='first_name-last_name-index', # Get indexes from indexes tab in dynamodb console
first_name__eq='John', # add __eq to your index name for specific search
last_name__eq='Smith' # This is your range key
)
Vous pouvez ajouter l'index principal ou les index secondaires globaux avec les clés de plage. opérateurs de comparaison possibles
__eq pour égal
__lt pour moins de
__gt pour plus de
__gte pour supérieur ou égal
__lte pour inférieur ou égal
__entre entre
__beginswith pour commence par
Exemple pour entre
print dynamodb_table.query_count(
index='first_name-last_name-index', # Get indexes from indexes tab in dynamodb console
first_name__eq='John', # add __eq to your index name for specific search
age__between=[30, 50] # This is your range key
)