[英]Creating a 'SS' item in DynamoDB using boto3
我正在嘗試使用 boto3 在 AWS DynamoDB 中創建一個項目,無論我嘗試什么,我都無法創建“SS”類型的項目。 這是我的代碼:
client = boto3.resource('dynamodb', region_name=region)
table = client.Table(config[region]['table'])
sched = {
"begintime": begintime,
"description": description,
"endtime": endtime,
"name": name,
"type": "period",
"weekdays": [weekdays]
}
table.put_item(Item=sched)
其他列工作正常,但無論我嘗試什么, weekdays
總是以“S”類型結束。 作為參考,這是同一張表中其他項目之一的樣子:
{'begintime': '09:00', 'endtime': '18:00', 'description': 'Office hours', 'weekdays': {'mon-fri'}, 'name': 'office-hours', 'type': 'period'}
嘗試將其轉換為 Python 結構顯然失敗了,所以我不確定如何插入新項目。
要使用 boto3 DynamoDB 資源級方法指示 SS(字符串集)類型的屬性,您需要提供一個集合而不是一個簡單的列表。 例如:
import boto3
res = boto3.resource('dynamodb', region_name=region)
table = res.Table(config[region]['table'])
sched = {
"begintime": '09:00',
"description": 'Hello there',
"endtime": '14:00',
"name": 'james',
"type": "period",
"weekdays": set(['mon', 'wed', 'fri'])
}
table.put_item(Item=sched)
跟進@jarmod 的回答:
如果您想使用字符串集調用update_item ,那么您將通過ExpressionAttributeValues屬性插入一個集,如下所示:
entry = table.put_item(
ExpressionAttributeNames={
"#begintime": "begintime",
"#description": "description",
"#endtime": "endtime",
"#name": "name",
"#type": "type",
"#weekdays": "weekdays"
},
ExpressionAttributeValues={
":begintime": '09:00',
":description": 'Hello there',
":endtime": '14:00',
":name": 'james',
":type": "period",
":weekdays": set(['mon', 'wed', 'fri'])
},
UpdateExpression="""
SET #begintime= :begintime,
#description = :description,
#endtime = :endtime,
#name = :name,
#type = :type,
#weekdays = :weekdays
"""
)
(提示:不推薦使用AttributeUpdates (與put_item調用等效的相關Item ),因此我建議使用ExpressionAttributeNames 、 ExpressionAttributeValues和UpdateExpression )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.