このトピックでは、Python 用 Tablestore SDK を使用して、データテーブルの自動インクリメント主キー列を設定する方法について説明します。また、自動インクリメント主キー列にデータを書き込み、自動インクリメント主キー列に生成された値を取得する方法についても説明します。
使用上の注意
Python 用 Tablestore SDK V4.0.0 以降では、自動インクリメント主キー列機能がサポートされています。
自動インクリメント主キー列の値は一意であり、単調に増加しますが、同じパーティションキー値を共有するパーティション内で常に連続しているとは限りません。
前提条件
クライアントが初期化されていること。詳細については、「Tablestore クライアントを初期化する」をご参照ください。
自動インクリメント主キー列を設定する
データテーブルを作成するときに、パーティションキーではない主キー列を自動インクリメント主キー列として指定できます。既存のデータテーブルでは、自動インクリメント主キー列を設定することはできません。
パーティションキーではない主キー列を自動インクリメント主キー列として指定できるのは、主キー列のデータ型が Integer の場合のみです。データテーブルは、最大で 1 つの自動インクリメント主キー列を持つことができます。自動インクリメント主キー列に生成される値は、64 ビット符号付き long 整数です。
サンプルコード
次のサンプルコードは、test_table という名前のデータテーブルを作成します。テーブルの主キーには、パーティションキー id と自動インクリメント主キー列 incr が含まれています。
schema_of_primary_key = [('id', 'STRING'), ('incr', 'INTEGER', PK_AUTO_INCR)]
table_meta = TableMeta('test_table', schema_of_primary_key)
table_options = TableOptions()
reserved_throughput = ReservedThroughput(CapacityUnit())
try:
client.create_table(table_meta, table_options, reserved_throughput)
print("テーブルの作成に成功しました。") # テーブルの作成に成功しました。
except Exception as e:
print("テーブルの作成に失敗しました。 %s" % e) # テーブルの作成に失敗しました。
データを書き込む
自動インクリメント主キー列にデータを書き込むときは、自動インクリメント主キー列の値をプレースホルダーに設定するだけで済みます。データのクエリと更新のために自動インクリメント主キー列の生成された値を取得する場合は、put_row の戻り値の型を RT_PK に設定する必要もあります
サンプルコード
次のサンプルコードは、test_table テーブルにデータの行を書き込み、書き込まれた行データの主キー情報を取得して出力します。
# 主キーを構成します。
primary_key = [('id', 'row1'), ('incr', PK_AUTO_INCR)]
# 書き込む行データを構成します。
attribute_columns = [('col1', 'val1')]
row = Row(primary_key, attribute_columns)
try:
# putRow メソッドを呼び出して行データを書き込み、戻り値の型を RT_PK(書き込まれた行データの主キー情報を返す)に設定します。
consumed, return_row = client.put_row('test_table', row, return_type=ReturnType.RT_PK)
# 読み取りと書き込みの CU 消費量
print('読み取り CU コスト: %s' % consumed.read) # 読み取り CU コスト
print('書き込み CU コスト: %s' % consumed.write) # 書き込み CU コスト
# 返された主キー情報を取得して出力します。戻り値の型が RT_PK に設定されていない場合、主キー情報はデフォルトでは返されません。
if return_row is not None:
print('主キー: %s' % return_row.primary_key) # 主キー
except Exception as e:
print("書き込みに失敗しました。 %s" % e) # 書き込みに失敗しました。