DynamoDB启动本地版本和python-sdk使用示例

原创 2016年12月30日 15:01:38

博客原文
安利一篇我翻译的国外大牛的神经网络入门文章

本地DynamoDB的启动方法

http://dynamodb-local.s3-website-us-west-2.amazonaws.com/dynamodb_local_2016-05-17.tar.gz下载DynamoDB的按照包,本地jre环境的配置请自行配置

# tar zxf dynamodb_local_2016-05-17.tar.gz
# mkdir data
# java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb -dbPath data
Initializing DynamoDB Local with the following configuration:
Port:   8000
InMemory:   false
DbPath: data
SharedDb:   true
shouldDelayTransientStatuses:   false
CorsParams: *

Table 创建

# -*- coding:utf-8 -*-

import boto3
from boto3.dynamodb.conditions import Key, Attr

dynamodb = boto3.resource('dynamodb',
                          endpoint_url='http://localhost:8000')


def table_create():
    table = dynamodb.create_table(
        TableName='users',
        KeySchema=[
            {
                'AttributeName': 'username',
                'KeyType': 'HASH'
            },
            {
                'AttributeName': 'last_name',
                'KeyType': 'RANGE'
            }
        ],
        AttributeDefinitions=[
            {
                'AttributeName': 'username',
                'AttributeType': 'S'
            },
            {
                'AttributeName': 'last_name',
                'AttributeType': 'S'
            },

        ],
        ProvisionedThroughput={
            'ReadCapacityUnits': 5,
            'WriteCapacityUnits': 5
        }
    )
    table.meta.client.get_waiter('table_exists').wait(TableName='users')

获取Table

def table_get():
    return dynamodb.Table('users')

写入item

def item_put():
    table = table_get()
    table.put_item(
        Item={
                'username': 'liujinliu',
                'first_name': 'Jinliu',
                'last_name': 'liu',
                'age': 30,
                'account_type': 'standard_user',
            }
    )

获取item

def item_get():
    table = table_get()
    response = table.get_item(
        Key={
            'username': 'liujinliu',
            'last_name': 'liu',
        }
    )
    item = response['Item']
    return item

update item

def item_update():
    table = table_get()
    table.update_item(
        Key={
            'username': 'liujinliu',
            'last_name': 'liu'
        },
        UpdateExpression='SET age = :val1',
        ExpressionAttributeValues={
            ':val1': 26
        }
    )

删除item

def item_delete():
    table = table_get()
    table.delete_item(
        Key={
            'username': 'liujinliu',
            'last_name': 'liu'
        }
    )

获取表内item数量

def table_size():
    table = table_get()
    return table.item_count

批量更新/插入item

items = [
    {
        'username': 'liujinliu',
        'last_name': 'liu',
        'first_name': 'jinliu',
        'age': 25,
        'address': {
            'road': '1 Jefferson Street',
            'city': 'LA',
            'state': 'CA',
            'zipcode': '90001'
        }
    },
    {
        'username': 'wangyiyang',
        'last_name': 'wang',
        'first_name': 'yiyang',
        'age': 26,
        'address': {
            'road': 'huilongguan',
            'city': 'Beijing',
            'state': 'CHINA',
            'zipcode': '082'
        }
    },
    {
        'username': 'chenwenquan',
        'last_name': 'chen',
        'first_name': 'wenquan',
        'age': 27,
        'address': {
            'road': 'jintailu',
            'city': 'henan',
            'state': 'JP',
            'zipcode': '222'
        }
    },
    {
        'username': 'dengliangju',
        'last_name': 'deng',
        'first_name': 'liangju',
        'age': 28,
        'address': {
            'road': 'qingnianlu',
            'city': 'chengdu',
            'state': 'India',
            'zipcode': '333'
        }
    },
]


def batch_write():
    table = table_get()
    with table.batch_writer(overwrite_by_pkeys=['username',
                                                'last_name']) as batch:
        for item in items:
            batch.put_item(Item=item)

query, scan

def query():
    table = table_get()
    response = table.query(
        KeyConditionExpression=Key('username').eq('wangyiyang')
    )
    items = response['Items']
    return items


def scan():
    table = table_get()
    response = table.scan(
        FilterExpression=Attr('age').lt(28)
    )
    items = response['Items']
    return items


def scan_1():
    table = table_get()
    response = table.scan(
        FilterExpression=Attr('age').lt(28) & Attr(
            'address.city').begins_with('B')
    )
    items = response.get('Items', [])
    return items

删除Table

def table_delete():
    table = table_get()
    table.delete()

测试

if __name__ == '__main__':
    table_create()
    # item_put()
    # print(item_get())
    # item_update()
    # print(item_get())
    # print(table_size())
    # item_delete()
    print(table_size())
    batch_write()
    print(table_size())
    # print(item_get())
    print(query())
    print(scan())
    print(scan_1())
    # table_delete()
    # print(query())
版权声明:本文为博主原创文章,未经博主允许不得转载。

AWS dynomodb 和 AWS CLI本地使用

本地使用dynamodb 下载Dynamodb到本地,如下是下载地址: .tar.gz 格式:http://dynamodb-local.s3-website-us-west-2.amazonaws...
  • yshxjoy
  • yshxjoy
  • 2016年11月17日 10:49
  • 1182

DynamoDB初体验

前言DynamoDB作为AWS云服务一部分,也支持本地化应用,本章将介绍如何在本地构建基础运行环境。 本章概要 安装DynamoDB Local; AWS CLI安装; AWS CLI使用 安装Dyn...
  • songhaifengshuaige
  • songhaifengshuaige
  • 2017年03月28日 14:58
  • 2163

DynamoDB 小结

DynamoDB简介DynamoDB 是AWS 提供一个 NoSql 数据库服务。它是一个Region级别的服务,针对用户对读写性能的要求进行不同的收费。注意 dynamodb 库中对一些数据类型支持...
  • u013148156
  • u013148156
  • 2015年09月17日 20:27
  • 1235

Nodejs课堂笔记-第五课 在nodejs中使用DynamoDB Local

在第四课中,我们介绍了DynamoDB Local版本的使用方式。这节课中,我们开始在nodejs中使用DynamoDB Local。在Amazon的网站中,提供了一个DynamoDB的sample,...
  • vikings_1001
  • vikings_1001
  • 2015年09月11日 19:19
  • 6898

DynamoDB启动本地版本和python-sdk使用示例

博客原文 安利一篇我翻译的国外大牛的神经网络入门文章 本地DynamoDB的启动方法 从http://dynamodb-local.s3-website-us-west-2.amazonaw...
  • github_25679381
  • github_25679381
  • 2016年12月30日 15:01
  • 976

消费者本地事务

之前在《实现应用内分布式事务管理(生产者)》章节已经重点介绍了生产者如何实现应用内的本地事务、分布式事务,对于消费者同样有事务管理的需求,本章节将重点介绍springboot下目前消费者本地事务。 ...
  • songhaifengshuaige
  • songhaifengshuaige
  • 2017年01月07日 19:12
  • 602

Nodejs课堂笔记-第六课 在DynamoDB中如何创建表

DynamoDB 中createTable各个参数的相关介绍和demo 代码。
  • vikings_1001
  • vikings_1001
  • 2015年09月14日 08:35
  • 6985

DynamoDB

本来想写写进程、线程、轻量级线程、goroutine还有协程(coroutine),为什么我把goroutine单独列出来是因为它不是协程,所有翻译成协程的都是偷用概念,把比线程轻量的都叫做协程。算了...
  • zagfai
  • zagfai
  • 2014年12月03日 01:15
  • 1253

AWS 常用CLI命令总结

原文地址:http://blog.csdn.net/libing_thinking/article/details/48091743对AWS服务操作可以通过管理控制台、各语言SDK、CLI以及API等...
  • kepa520
  • kepa520
  • 2018年02月09日 11:55
  • 17
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DynamoDB启动本地版本和python-sdk使用示例
举报原因:
原因补充:

(最多只允许输入30个字)