首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Python在1写入DynamoDB中插入对象列表?

如何使用Python在1写入DynamoDB中插入对象列表?
EN

Stack Overflow用户
提问于 2020-02-17 17:44:27
回答 1查看 3K关注 0票数 1

嗨,我正在试着制作一张桌子,这张桌子将有一天的出租车行程。1次出租车旅行的特点之一是包括一张在该次旅行中使用的所有折扣清单。

可以使用任意数量的折扣。我不知道该如何做,如何将折扣列表包含在一个项目属性中?因此,基本上,将一个包含属性列表的项写入DynamoDB?

这是我的桌子:

代码语言:javascript
复制
def create_table(self):
        table = dynamodb.create_table(
            TableName='TaxiTable',
            KeySchema=[
                {
                    'AttributeName': 'trip',
                    'KeyType': 'HASH'
                },
            ],
            AttributeDefinitions=[
                {
                    'AttributeName': 'trip',
                    'AttributeType': 'S'
                },

            ],
            ProvisionedThroughput={
                'ReadCapacityUnits': 10,
                'WriteCapacityUnits': 10
            }
        )

        print("Table status:", table.table_status)

“旅行”的关键是一根长串,上面写着那辆出租车的起源,当天最后一站是在那里,出租车号码,停车次数,以及行程的日期。

代码语言:javascript
复制
trip_key: 12thAve.MapleDrive.0124.02.02202020

下面作为一个属性,我想要一张清单,列出在那次出租车旅行中使用的所有折扣/类似于:

代码语言:javascript
复制
trip_key: 12thAve.MapleDrive.0124.02.02202020
discount_map: 
{
  discount1: { name: 'Senior', total_saved: '10'},
  discount2: { name: 'Student', total_saved: '30'},
  discount3: { name: 'Employee', total_saved: '20'},
  discount4: { name: 'Hotel', total_saved: '30'}
}

我不知道一次旅行可以打多少折。可能在5-10之间。但我想把所有的折扣包括在一个插入。我想查询在出租车旅行中使用的特定折扣,以及从这个表中节省的总额。

我不知道首先是否应该将列表转换为JSON对象?或者,如果有一种方法可以遍历列表并按我的意愿插入它。

代码语言:javascript
复制
import boto3

class taxi_discount:
    name = None
    total_saved = None

# rest of logic for this class...


class insert_to_dynamoDb:

    dynamodb = boto3.resource('dynamodb', region_name='us-west-2', endpoint_url="http://localhost:8000")

    taxi_trip_key= None            
    taxi_discounts_list = []

    def __init__(taxi_trip, discount_list):
            self.taxi_trip_key= taxi_trip
            self.discount_list = discount_list



    def write_to_table(self):
            table = dynamodb.Table('TaxiTable')

            response = table.put_item(
                Item={
                    'trip': taxi_trip_key,
                    'discount_map': taxi_discounts_list
                    }
                } )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-17 17:50:44

DynamoDB支持批处理写入。

文档中的示例:

代码语言:javascript
复制
with table.batch_writer() as batch:
    for i in range(50):
        batch.put_item(
            Item={
                'account_type': 'anonymous',
                'username': 'user' + str(i),
                'first_name': 'unknown',
                'last_name': 'unknown'
            }
        )

指南医生

API文档

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60267884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档