botoを使用してdynamodbテーブルにアクセスしています。スキャン操作を実行しようとするまで、すべてが順調でした。
インターネットを繰り返し検索した後で見つけた構文をいくつか試しましたが、うまくいきませんでした。
def scanAssets(self, asset):
results = self.table.scan({('asset', 'EQ', asset)})
-or-
results = self.table.scan(scan_filter={'asset':boto.dynamodb.condition.EQ(asset)})
私がスキャンしている属性は「アセット」と呼ばれ、アセットは文字列です。
奇妙なことに、table.scan呼び出しは、常にこの関数を通過することになります。
def dynamize_scan_filter(self, scan_filter):
"""
Convert a layer2 scan_filter parameter into the
structure required by Layer1.
"""
d = None
if scan_filter:
d = {}
for attr_name in scan_filter:
condition = scan_filter[attr_name]
d[attr_name] = condition.to_dict()
return d
私はPythonの専門家ではありませんが、これがどのように機能するかわかりません。つまり、このコードを通過するには、scan_filterはどのような構造である必要がありますか?
繰り返しますが、多分私はそれを間違っていると言っています。助言がありますか?