[AWS][Nosql]DynamoDB動手實驗101

這個實驗包括:sql

  1. 建立一個DynamoDB 的Table(表)
  2. 添加數據到Table中
  3. 查詢Table中的數據
  4. 刪除數據庫
  5. 補充,JSON和 Python 的query

Task1:建立一個DynamoDB 的Table(表)

[AWS][Nosql]DynamoDB動手實驗101

[AWS][Nosql]DynamoDB動手實驗101

Task2:添加數據到Table中

[AWS][Nosql]DynamoDB動手實驗101

[AWS][Nosql]DynamoDB動手實驗101

[AWS][Nosql]DynamoDB動手實驗101

[AWS][Nosql]DynamoDB動手實驗101

[AWS][Nosql]DynamoDB動手實驗101

[AWS][Nosql]DynamoDB動手實驗101

Task3:查詢Table中的數據

[AWS][Nosql]DynamoDB動手實驗101

條件是and ,不是or。
能夠添加Filter數據庫

[AWS][Nosql]DynamoDB動手實驗101

Task4:刪除數據庫

[AWS][Nosql]DynamoDB動手實驗101

[AWS][Nosql]DynamoDB動手實驗101

那麼應用程序查詢的方式呢?

如下是 DynamoDB 中的幾個 Query 示例:less

###返回 Aritist = 'No One You Know' SongTitle='Call Me Today' 的歌曲:
{
TableName: "Music",
KeyConditionExpression: "Artist = :a and SongTitle = :t",
ExpressionAttributeValues: {
":a": "No One You Know",
":t": "Call Me Today"
}
}ide

###返回 Aitist='No One You Know’ 的全部歌曲:3d

{
TableName: "Music",
KeyConditionExpression: "Artist = :a",
ExpressionAttributeValues: {
":a": "No One You Know"
}
}視頻

###返回Aritist ='No One You Know' 而且 SongTitle 開頭爲Today 而且價格小於1 的全部歌曲:blog

{
TableName: "Music",
KeyConditionExpression: "Artist = :a and contains(SongTitle, :t)",
FilterExpression: "price < :p",
ExpressionAttributeValues: {
":a": "No One You Know",
":t": "Today",
":p": 1.00
}
}ci

###在 DynamoDB 中,必須使用 ExpressionAttributeValues 做爲表達式參數(例如,KeyConditionExpression和 FilterExpression)中的佔位符。
這相似於在關係數據庫中使用綁定變量,在運行時將實際值代入 SELECT語句。 下邊是query的語法:get

###返回 Aritist = 'No One You Know' SongTitle='Call Me Today' 的歌曲:
{
TableName: "Music",
KeyConditionExpression: "Artist = :a and SongTitle = :t",
ExpressionAttributeValues: {
":a": "No One You Know",
":t": "Call Me Today"
}
}it

###返回 Aitist='No One You Know’ 的全部歌曲:

{
TableName: "Music",
KeyConditionExpression: "Artist = :a",
ExpressionAttributeValues: {
":a": "No One You Know"
}
}

###返回Aritist ='No One You Know' 而且 SongTitle 開頭爲Today 而且價格小於1 的全部歌曲:

{
TableName: "Music",
KeyConditionExpression: "Artist = :a and contains(SongTitle, :t)",
FilterExpression: "price < :p",
ExpressionAttributeValues: {
":a": "No One You Know",
":t": "Today",
":p": 1.00
}
}

###Python的查詢語法:

###返回 Artist='No One You Know' 而且SongTitle='Somewhere Down The Road' 的全部歌曲:

response = table.query(
KeyConditionExpression=Key('Artist').eq('No One You Know') & Key('SongTitle').eq('Somewhere Down The Road')
)
items = response['Items']
print(items)

##返回值,output:
[{
u'Artist': u'No One You Know',
u'AlbumTitle': u'Somewhat Famous',
u'CriticRating': Decimal('8.4'),
u'Year': Decimal('1984'),
u'Genre': u'Country',
u'SongTitle': u'Somewhere Down The Road'
}
]

###返回Aritist ='No One You Know' 而且 SongTitle 開頭爲 Look 的全部歌曲:
response = table.query(
KeyConditionExpression=Key('Artist').eq('The Acme Band') & Key('SongTitle').begins_with('Look')
)
items = response['Items']
print(items)

###output

[
{
u'Genre': u'Rock',
u'Price': Decimal('0.99'),
u'Artist': u'The Acme Band',
u'SongTitle': u'Look Out, World',
u'AlbumTitle': u'The Buck Starts Here'
}
]

有關DynamoDB的詳細視頻課程參考連接:https://edu.51cto.com/center/course/lesson/index?id=558308