问题
我正在尝试逐项查看表格,以便如果一个项目已经存在,那么我应该能够更新它,如果没有,那么我应该能够插入它。
但是,我了解到更新也可以像 upsert(update/insert) 一样工作。我的情况也不适合。
我的情况
- 检查
item
表中是否存在并存储flag
(布尔值) - 检查是否
flag
是0
,(项目不可用)然后,插入项目并将当前时间戳添加到列中Inserted_dttm
- 检查是否
flag
是1
,(项目可用)然后更新项目并将当前时间戳添加到列中Updated_dttm
(而不是 Inserted_dttm)
试用
我一直在寻找query()
是一个不错的选择get_item()
,但是任何一个都欢迎您的解决方案。
def lambda_handler(event, context):
x = TrainDataProcess()
file_name = 'Training_data/' + event['file_name']
s3.Object(bucket_name, file_name).download_file('/tmp/temp.xlsx')
table_name = 'training_data'
x.load_excel(name='/tmp/temp.xlsx')
x.load_headers(skiprows=0)
x.data_picking()
table = dynamoDB_client.Table(table_name)
load = x.return_records_json()
try:
with table.batch_writer() as batch:
for record in load:
flag = table.query(TableName=table_name, )
if flag == 0:
record['inserted_dttm'] = get_dttm()
batch.put_item(Item=record)
elif flag == 1:
record['updated_dttm'] = get_dttm()
batch.update_item(Item=record)
return True
except Exception as e:
return e