DynamoDB启动本地版本和python-sdk使用示例
来源:互联网 发布:西部数码域名续费价格 编辑:程序博客网 时间:2024/05/21 18:33
本地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 dataInitializing DynamoDB Local with the following configuration:Port: 8000InMemory: falseDbPath: dataSharedDb: trueshouldDelayTransientStatuses: falseCorsParams: *
Table 创建
# -*- coding:utf-8 -*-import boto3from boto3.dynamodb.conditions import Key, Attrdynamodb = 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 itemsdef scan(): table = table_get() response = table.scan( FilterExpression=Attr('age').lt(28) ) items = response['Items'] return itemsdef 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())
0 0
- DynamoDB启动本地版本和python-sdk使用示例
- boto3 dynamodb 入门使用
- DynamoDB
- 【python】3.6版本使用http.client网络请求示例
- 配置tomcat使用特定的java sdk版本和密码
- ionic android 版本与本地sdk版本不一致的问题
- XCode5使用低版本SDK
- Xcode5使用低版本SDK
- Emulator Control无法使用解决方法(SDK Tools版本和ADT版本不一致引起)
- Android SDK版本和ADT版本
- Android SDK版本和ADT版本
- Android SDK版本和ADT版本
- Android SDK版本和ADT版本
- Android SDK版本和ADT版本
- Android SDK版本和ADT版本
- Android SDK版本和ADT版本
- Android SDK版本和ADT版本
- Android SDK版本和ADT版本
- Ambari-整体介绍
- jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令
- 安卓模拟器配置了摄像头还是显示黑白棋盘
- 微信小程序开发资料汇总
- 深入研究java.lang.ThreadLocal类
- DynamoDB启动本地版本和python-sdk使用示例
- 分布式事务
- 点击Dialog中的确定退出当前Activity,怎么样能保存当前页面的数据
- android:PopupWindow设置背景色为0x00000000为什么不是黑色
- MySQL的Innodb缓存相关优化
- 11、Struts2 的文件上传和下载
- .Net FrameWork常用类
- 实验案例4-4:windows消息队列(堆的应用)
- 敏捷2016 总结 (包括16年社区活动的收获问答)