所以当时我还不知道-我的问题中显示的代码片段只是关于定义键模式的-即您的主键/复合键。我想做的是向表中添加实际数据,这些示例都是在boto3文档中手动完成的。
回答我自己的问题:首先,您显然需要创建和定义关键模式,而这根本没有时间使用问题中显示的模板手动执行。
请注意,Boto3不允许浮点值。。。我的解决办法是把它们变成
str
类型。Boto3建议使用
Decimal
但是
Decimal(str(value))
无法工作,因为它是作为字符串传递的
Decimal(value)
出于某种原因(有人能解释一下吗?):
Passing a Decimal(str(value)) to a dictionary for raw value
这就是我如何使用pandas从excel导入数据,然后自动将数据放入我的表中:
#panda reads the excel document to extract df
df = pd.read_excel(fileRoute,dtype=object)
#the column headers are allocated to the keys variable
keys= df.columns.values
#create a dynamodb instance and link it to an existing table in dynamodb
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table(name)
#batch_writer() allows the addition of many items at once to the table
with table.batch_writer() as batch:
dfvalues = df.values
#loop through values to generate dictionaries for every row in table
for sublist in dfvalues:
dicts = {}
for ind, value in enumerate(sublist):
if type(value) is float:
if math.isnan(value): #you might want to avoid 'NaN' types
continue
value = str(value) #convert float values to str
dicts[headings[ind]] = value
batch.put_item(
Item=dicts #add item to dynamoDB table
)