パッケージboto3
- Python用のAmazonの公式AWS APIラッパー - DynamoDBに一括してアイテムをアップロードするための優れたサポートがあります。それは次のようになります。ここではバッチ取得要求をAWS DynamoDBに送信するためのPython APIはありますか?
db = boto3.resource("dynamodb", region_name = "my_region").Table("my_table")
with db.batch_writer() as batch:
for item in my_items:
batch.put_item(Item = item)
my_items
は、テーブルの主キー(複数可)を持っている必要がありますそれぞれのPythonの辞書のリストです。状況は完璧ではありません。たとえば、スループットの限界を超えないようにするための安全機構はありませんが、それでもかなり良いです。
ただし、データベースからの読み取りに対応するものはありません。私が見つけやすいのはDynamoDB.Client.batch_get_item()
ですが、ここではAPIは非常に複雑です。
db_client = boto3.client("dynamodb", "my_region")
db_client.batch_get_item(
RequestItems = {
"my_table": {
"Keys": [
{"my_primary_key": {"S": "my_key1"}},
{"my_primary_key": {"S": "my_key2"}}
]
}
}
)
これは許容できるかもしれませんが、応答は同じ問題があります:ここでは、2つの項目を要求すると、次のようになります。すべての値は、キーのデータ型(マッピングの数の文字列の"S"
、"N"
、"M"
ている辞書ですが、など)、すべてを解析する必要があるのはちょっと面倒です。だから、私の質問は以下のとおりです。
上記
batch_writer
機能と同様DynamoDBのからの読み取りバッチの任意のネイティブboto3
サポートは、ありますか?それに失敗
、
boto3
は自動的にDynamoDB.Client.batch_get_item()
機能への応答をデシリアライズするための任意の組み込みの方法を提供していますか?
また、入力または出力にタイプパージングが必要ないという点で、私が "正しい" APIと考えている機能が追加されています。だから、これは開発者の何らかの見落としであり、私は回避策を探していると思います。
これは良いようです!私はこれがほとんどの痛みを取り除くだろうと思う。ありがとうございました – mark