2015-12-24 14 views
9

the documentation'un ardından, bir dynamodb tablosunda yalnızca bir öznitelik yoksa, güncelleştirilecek veya eklenecek bir güncelleştirme deyimi oluşturmaya çalışıyorum.dynamodb içinde update_item örneği boto3

Bu

response = table.update_item(
    Key={'ReleaseNumber': '1.0.179'}, 
    UpdateExpression='SET', 
    ConditionExpression='Attr(\'ReleaseNumber\').eq(\'1.0.179\')', 
    ExpressionAttributeNames={'attr1': 'val1'}, 
    ExpressionAttributeValues={'val1': 'false'} 
) 

çalışıyorum ben alıyorum hatadır: Herkes ben örneğini paylaşmak lütfen başarmak için çalışıyorum ne benzer bir şey yapmadı ise

botocore.exceptions.ClientError: An error occurred (ValidationException) when calling the UpdateItem operation: ExpressionAttributeNames contains invalid key: Syntax error; key: "attr1"

.

cevap

13

Çalışma örneği here, tablo tüm dizinlerini Anahtar olarak listelemek için çok önemli bulundu, bu güncelleştirme önce ek sorgu gerektirir, ancak çalışır.

anahtar bu bir maddeyi güncelleştirmek için tüm değerleri dahil zorunda iken .... orijinal hata bu cevap verilen örnekten bırakıldığını ExpressionAttributeNames atıfta bulundu unutulmamalıdır
+0

response = table.update_item( Key={ 'ReleaseNumber': releaseNumber, 'Timestamp': result[0]['Timestamp'] }, UpdateExpression="set Sanity = :r", ExpressionAttributeValues={ ':r': 'false', }, ReturnValues="UPDATED_NEW" ) 
orijinal olarak sahip olduğunuz hata doğrudan değildi. – James