DynamoDB扫描函数返回正确的结果,但与DynamoDBResponseError
问题描述:
我试图使用扫描功能如下,以从表中检索任何10个结果在我的数据库:DynamoDB扫描函数返回正确的结果,但与DynamoDBResponseError
conn = boto.connect_dynamodb(
aws_access_key_id=config.AWS_KEY,
aws_secret_access_key=config.AWS_SECRET)
table = conn.get_table('tablename')
results = table.scan(attributes_to_get={'id'},
max_results=10)
for item in results:
print item
./dbtest.py
{'id': 'SkAJWDUZPSNrwepf7gdnFhExXPFABmqLjk1ADDRJuoo'}
{'id': 'RjAVvd4SAmjtUbXEYmzBaIIDuruL5UZWEQPdcpj4XRc'}
...
但后来我在得到这个错误结束后(返回正确的结果后):
Traceback (most recent call last):
File "./mediatest.py", line 23, in <module>
for item in results:
File "/usr/lib/python2.7/dist-packages/boto/dynamodb/layer2.py", line 767, in scan
object_hook=item_object_hook)
File "/usr/lib/python2.7/dist-packages/boto/dynamodb/layer1.py", line 521, in scan
return self.make_request('Scan', json_input, object_hook=object_hook)
File "/usr/lib/python2.7/dist-packages/boto/dynamodb/layer1.py", line 121, in make_request
retry_handler=self._retry_handler)
File "/usr/lib/python2.7/dist-packages/boto/connection.py", line 746, in _mexe
status = retry_handler(response, i, next_sleep)
File "/usr/lib/python2.7/dist-packages/boto/dynamodb/layer1.py", line 148, in _retry_handler
json_response)
boto.exception.DynamoDBResponseError: DynamoDBResponseError: 400 Bad Request
{'Message': 'Expected null', '__type': 'com.amazon.coral.service#SerializationException'}
我不处理需要处理的东西吗?
答
上有扫描线的错误:
results = table.scan(attributes_to_get={'id'},
max_results=10)
,而不是
results = table.scan(attributes_to_get=['id'],
max_results=10)
编辑:
这适用于2.5.2的Boto
import boto
db = boto.connect_dynamodb()
table = db.get_table('MyTable')
res = table.scan(attributes_to_get=['id'], max_results=10)
for i in res:
print i
是什么你博托版本? (''boto .__ version__'') – yadutaf
我正在运行2.5.2。即使我删除了attributes_to_get变量,我也会得到这个错误 – ensnare
db.layer1.region.name和db.layer1.Version是怎么回事? – yadutaf