2016-11-09 6 views
0

"ハッシュキー"のみを記述することで(私はソートキーを使用していません)AWS Dynamo DBにデータを書き込みます。 Dynamo Dbのデータが行の順序で格納されていないという問題が発生しています。レビューのためにコードと写真が添付されています。データはAWS Dynamo DBの行順に(oder)に格納されません

from __future__ import print_function # Python 2/3 compatibility 
import boto3 
import json 
import decimal 
import datetime 
import time 

dynamodb = boto3.resource('dynamodb') 

# Helper class to convert a DynamoDB item to JSON. 
class DecimalEncoder(json.JSONEncoder): 
    def default(self, o): 
     if isinstance(o, decimal.Decimal): 
      if o % 1 > 0: 
       return float(o) 
      else: 
       return int(o) 
     return super(DecimalEncoder, self).default(o) 

table = dynamodb.create_table(
    TableName='Alarms', 
    KeySchema=[ 
     { 
      'AttributeName': 'Date', 
      'KeyType': 'HASH' #Partition key 
     } 
    ], 
    AttributeDefinitions=[ 
     { 
      'AttributeName': 'Date', 
      'AttributeType': 'S' 
     }, 

    ], 
    ProvisionedThroughput={ 
     'ReadCapacityUnits': 5, 
     'WriteCapacityUnits': 5 
    } 
) 

print("Table status:", table.table_status) 

# Wait until the table exists. 
table.meta.client.get_waiter('table_exists').wait(TableName='Alarms') 

table = dynamodb.Table('Alarms') 


with open("alarm.json") as json_file: 
    alarms = json.load(json_file, parse_float = decimal.Decimal) 
    for alarm in alarms: 
     FNB = alarm['FNB'] 
     FRE = alarm['FRE'] 
     MB = alarm['MB'] 
     TB = alarm['TB'] 
     TD1 = alarm['TD1'] 
     TD2 = alarm['TD2'] 
     TW = alarm['TW'] 

     Date = str(datetime.datetime.now()) 

     table.put_item(
      Item={ 
       'Date': Date, 
       'FNB': FNB, 
       'FRE': FRE, 
       'MB': MB, 
       'TB': TB, 
       'TD1': TD1, 
       'TD2': TD2, 
       'TW': TW, 
      } 
     ) 

     newstr = json.dumps(alarm, cls=DecimalEncoder).replace('\"','').strip('{}') 
     print('Date:', Date,',', newstr) 
     time.sleep(1) 

ダイナモDBで予想される出力(募集出力):(ダイナモDBに登録された)来

Date: 2016-11-09 08:57:20.309674 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:21.695486 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:22.870489 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 1 
Date: 2016-11-09 08:57:23.983862 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 1, TB: 1 
Date: 2016-11-09 08:57:25.101755 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 1, TD1: 1, TB: 1 
Date: 2016-11-09 08:57:26.213475 , FRE: 0, MB: 1, TW: 0, FNB: 1, TD2: 1, TD1: 1, TB: 1 
Date: 2016-11-09 08:57:27.324465 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:28.435475 , FRE: 0, MB: 0, TW: 0, FNB: 1, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:29.546471 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:30.658182 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:31.768494 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 1 
Date: 2016-11-09 08:57:32.886541 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 1, TB: 1 
Date: 2016-11-09 08:57:34.046496 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 1, TD1: 1, TB: 1 
Date: 2016-11-09 08:57:35.222471 , FRE: 0, MB: 1, TW: 0, FNB: 1, TD2: 1, TD1: 1, TB: 1 
Date: 2016-11-09 08:57:36.339477 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:37.450506 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 1, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:38.563476 , FRE: 0, MB: 0, TW: 0, FNB: 1, TD2: 1, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:39.675500 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:40.789492 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:41.900886 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:43.014493 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 1 
Date: 2016-11-09 08:57:44.125980 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 1, TB: 1 

出力

Date: 2016-11-09 08:57:26.213475 , FRE: 0, MB: 1, TW: 0, FNB: 1, TD2: 1, TD1: 1, TB: 1 
Date: 2016-11-09 08:57:27.324465 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:28.435475 , FRE: 0, MB: 0, TW: 0, FNB: 1, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:29.546471 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:20.309674 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:21.695486 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:22.870489 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 1 
Date: 2016-11-09 08:57:23.983862 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 1, TB: 1 
Date: 2016-11-09 08:57:25.101755 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 1, TD1: 1, TB: 1 
Date: 2016-11-09 08:57:36.339477 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:37.450506 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 1, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:38.563476 , FRE: 0, MB: 0, TW: 0, FNB: 1, TD2: 1, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:39.675500 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:40.789492 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:41.900886 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:43.014493 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 1 
Date: 2016-11-09 08:57:44.125980 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 1, TB: 1 
Date: 2016-11-09 08:57:29.546471 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:30.658182 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 
Date: 2016-11-09 08:57:31.768494 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 1 
Date: 2016-11-09 08:57:32.886541 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 0, TD1: 1, TB: 1 
Date: 2016-11-09 08:57:34.046496 , FRE: 0, MB: 1, TW: 0, FNB: 0, TD2: 1, TD1: 1, TB: 1 
Date: 2016-11-09 08:57:35.222471 , FRE: 0, MB: 1, TW: 0, FNB: 1, TD2: 1, TD1: 1, TB: 1 
Date: 2016-11-09 08:57:36.339477 , FRE: 0, MB: 0, TW: 0, FNB: 0, TD2: 0, TD1: 0, TB: 0 

だから、それはダイナモDBに順に格納されていません。この問題がどのように解決されたか。

+0

DynamoDBが挿入注文を維持していないことを意味しますか? – notionquest

+0

@notionquestはいそうです。広告掲載オーダーは維持されません。 – user3831290

答えて

0

パーティションキーのみを使用している場合、DynamoDBはそのデータがソートされたことを保証しません。

パーティションキーとソートキーの両方がある場合、DynamoDBは指定されたパーティションキーのデータがソートキーでソートされることを保証します。

関連する問題