我做了一個很大的不,并創建了一個大表,其中包含列名中的空格。我正在嘗試掃描此表并選擇特定的資訊。
import boto3
from boto3.dynamodb.conditions import Key
dynamodb = boto3.resource('dynamodb',
region_name='xx-xxxx-xx')
table = dynamodb.Table('ourtable')
scan_kwargs = {
'FilterExpression': Key('primarykey').between(*key_range)
'ProjectionExpression': "primarykey, other column"
}
done = False
start_key = None
while not done:
if start_key:
scan_kwargs['ExclusiveStartKey'] = start_key
response = table.scan(**scan_kwargs)
start_key = response.get('LastEvaluatedKey', None)
done = start_key is None
運行這個給我這個錯誤:
An error occurred (ValidationException) when calling the Scan operation: Invalid ProjectionExpression: Syntax error; token: "column", near: "other column"
我假設這是一些決議問題。我嘗試了幾種逃避空間的方法,但無濟于事。這些嘗試包括:
{other column}
\'other column\'
\"other column\"
other column
other\column
other{BEASPACE}column
我寧愿不重新制作這張桌子。我在這里先向您的幫助表示感謝。
uj5u.com熱心網友回復:
在 DynamoDB 運算式中,您需要做的是使用對附加ExpressionAttributeNames引數中列出的名稱的參考,而不是像您嘗試的那樣使用引號或反斜杠“轉義”列名稱。例如,
scan_kwargs = {
'FilterExpression': Key('primarykey').between(*key_range)
'ProjectionExpression': "primarykey, #othercolumn"
'ExpressionAttributeNames': {'#othercolumn': 'other column'}
}
請注意在投影運算式中我如何使用參考 #othercolumn而不是列的真實名稱,然后在ExpressionAttributeNames.
此功能記錄在此處:https : //docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/346067.html
