[AWS][Nosql]DynamoDB动手实验101

这个实验包括:

  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:删} u X x Z d o % {数据库

[AWS][Nosql]DynamoDB动手实验101

那么应用程序查询的方式呢?

以下是 DynamoDB 中的几个 Query 示例A N a ~ f ~ ,

###返回 AritiQ d { w 5st = 'Noi l - - One You Know' SongTitle='Call Me To; Q i R ^ M G Mday' 的歌曲:
{
TableName: "Music",
KeyCondi/ 3 J S s !tionExpression: "Artist = :a and SongTitle = :t",
ExpressionAttributeValues: {
":a": "No One You Know",
":t": "Call Me Today"
}
}

###返回 Aitist='No One You Know’ 的所有歌曲:

{
TableNaY p J j % kme: "Musx } # f E jic",
KeyConditionExpression: "Artist = :a",
Expression* ) ( = / / S lAttributeValues: { T b ) . 7 S
":a": "No One You Know"
}
}

###返回Aritist ='No One You Know' 并且 SongTitle 开头为Today 并且价格小于1 的所有歌曲:

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

###在 DynamoDB 中,必须使用 ExpressionAttributeValues 作为表达式参数(例如,KeyConditionExpression和 FilterExpression)中的占位符。
这类似于在关系数据库中使用绑定变量,在运行时将实际值代入 SELECT语句。 下边是query的语法:

###返回 Aritist = 'No One You Know' SongTitle='Call Me Todayw t v b }' 的歌曲:
{
TableName: "Music",
KeyConditionExpression:t Y j V { X e 5 "Artisw ~ D { ` L !t = :a and SongTitleW } r W k h ! = :t",
ExpressionAttributeValues: {
":a": "No One You Know",
":t": "Call Me Today"
}
}

###返回 Ait4 6 Qist='No One You Know’ 的所有歌曲:

{
TableName: "Music",
KeyConditionExpression: "Artist = :a",
ExpressionAttributeValues: {
":a": "No One You Knowv g 2"
}
}

###返回Aritist ='No One YouK V [ Know' 并且 SongTitle 开4 ) G T q ? u头为Today 并且价格小于1 的所有歌曲:

{
TableName: "Music",
KeyConditionExpression: "Artist = :a an: e k $ M Vd contains(SongTitle, :t)",
FilterExpression: "price < :p",
ExpressionAttributeValues: {
":a": "No One You Know" N t 1 @,
":tG F g z H W U": "Today",
":pJ r - 6 p": 1.00
}
}0 o 4 2

###Python的查询语法:

###返回 Artist=Z U i # Y 1 E d ;'No One You Know' 并且SongTitle='Somewh. O g r 4 U kere Down The Road' 的所p j . B有歌曲:

reA n x I l 7 Psponse = table.query(
KeyConditionExpression=Key('Artist').eq('No One You Know') &a~ V b = = o Cmp; 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(f e O ( I B $ &'8.4'),
u'Year': Decimal('1984'),
u'Genre'v a 7 6 | I: u'Country',
u'SongTitle': u'Somewhere Down The Road'
}
]

###返回Aritist =. } ( P k Z'No One You Know' 并且 So5 o `ngTitle 开头为 Look 的所有歌曲:
response = table.query(
KeyConditionExpression=Key('Artist').eq('The Acme Band') & Key('SongTitle').beginsm z ) t O 5 O Z %_with('Look')
)
items = re, T + } m & Vsponse['Items']
print(items)

###output

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

有关DynamoDB的详细视频课程参考链接:https://edh p =u.51cto.com/center/course/l@ - X = 4 / Gesson/index?id=558308