LoginSignup
6
5

More than 3 years have passed since last update.

DynamoDBをpythonで扱う

Last updated at Posted at 2019-09-04

目的

DynamoDBを使った方法をメモ。
boto3を使う前提。

前提

扱うテーブルはパーティションキーとソートキーがあるテーブルとする。

事前準備

対象のテーブルを指定する関数を定義。(別に関数を用意しなくてもよい)

def getTable():
        return boto3.resource('dynamodb').Table('テーブル名')

検索

・パーティションキーとソートキーを指定して一意検索

一意検索
rst = getTable().query(
    KeyConditionExpression = Key('パーティションキー名').eq('検索項目') & Key('ソートキー').eq('検索項目')
)

※and条件は「&」、or条件は「|」で指定する。

・前方一致

ソートキーの前方一致検索
rst = getTable().query(
    KeyConditionExpression = Key('パーティションキー名').eq('検索項目') & Key('ソートキー名').begins_with('検索文字列')
)

※パーティションキーを指定しないとエラーになる。

・パーティションキーのみで検索

rst = getTable().scan(
    FilterExpression= Key('パーティションキー').eq('検索項目')
)

更新

1レコード更新
getTable().update_item(
        Key = {
                'パーティションキー名': 'パーティションキーの値',
                'ソートキー名': 'ソートキーの値'
        },
        UpdateExpression = 'set ' \
                + '更新カラム名1' + '=:' + '更新カラム名1' + ',' \
                + '更新カラム名2' + '=:' + '更新カラム名2',
        ExpressionAttributeValues = {
                ':' + '更新カラム名1' : `更新する値1`,
                ':' + '更新カラム名2' : `更新する値2`
        },
        ReturnValues="UPDATED_NEW"
)

登録

1レコード登録
getTable().put_item(
        Item = {
                # パーティションキー
                'パーティションキー名': 'パーティションキーの値',
                # ソートキー
                'ソートキー名': 'ソートキーの値',
                # カラム1
                'カラム名': 'カラム1の値'
        }
)

削除

1レコード削除

getTable().delete_item(
        Key = {
                # パーティションキー
                'パーティションキー名': 'パーティションキーの値',
                # ソートキー
                'ソートキー名': 'ソートキーの値'
        }
)

最後に

違う検索方法を知ったときに随時メモを増やしていきたい。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5