尝试使 AWS boto3 更加 Pythonic 的工具集合
项目描述
awspy工具
##DynamoDBDataStore
这是一个帮助 DynamoDB 更易于使用的 Python 包。
首先,从 awspytools 导入 DynamoDBDatastore:
from awspytools import DynamoDBDataStore
使用表名初始化存储:
store = DynamoDBDataStore(table_name='DynamoDB Table Name')
默认情况下,我们假设以下哈希、排序和索引键:
hash_key = 'PK'
sort_key = 'SK'
GSI1_HASH_KEY = 'GSI1PK'
GSI1_SORT_KEY = 'GSI1SK'
GSI2_HASH_KEY = 'GSI2PK'
GSI2_SORT_KEY = 'GSI2SK'
要覆盖这些值,您可以按如下方式定义您的商店:
store = DynamoDBDataStore(
table_name='DynamoDB Table Name',
hash_key='custom_hash',
sort_key='custom_sort',
use_default_index_keys=False
)
您可以按如下方式添加自定义索引键:
store.add_index_key('custom gsi 1')
或者您可以添加许多索引键,如下所示:
store.add_index_keys(['custom gsi 1 hash', 'custom gsi 1 sort'])
要获取文档,请执行以下操作:
result = store.get_document(index=('hash_key', 'sort_key'), return_index=True)
如果您指定:
return_index=False
响应对象将没有响应中指定的哈希/排序键或 GSI 键。
要保存文档,只需执行以下操作:
store.save_document(
document={
"number": 1,
"hello": "world",
"foo": ['bar', 'spam'],
"foo": {
"spam": "eggs"
}
},
index=('hash_id', 'sort_id')
)
要获取多个文档,您需要提供查询。请注意,这会为您分页结果,以便返回所有文档!
query = {
'ExpressionAttributeNames': {'#PK': 'PK'},
'ExpressionAttributeValues': {':PK': {'S': 'hash_key'}},
'KeyConditionExpression': '#PK = :PK'
}
result = store.get_documents(query)
删除文档: result = store.delete_document(index=('hash_key', 'sort_key'))
为了执行批处理请求,我们有一个 boto3 的 batch_write_item 的包装器:
batch_request = store.batch_request(
request_items=[
{
"DeleteRequest": {...}, #As per boto3's parameter structure
"PutRequest": {...} #As per boto3's document structure parameter structure
}
]
)
要执行交易:
transaction_items = [
{
'Update': {
'Key': {
'PK': {'S': 'hash'},
'SK': {'S': 'sort'},
},
'UpdateExpression': 'SET some_key = :some_value',
'ExpressionAttributeValues': {
':some_value': {'S': 'hello world'},
},
'TableName': store.table_name
}
},
{
'Update': {
'Key': {
'PK': {'S': 'hash'},
'SK': {'S': 'sort'},
},
'UpdateExpression': 'SET new_key = :new_value',
'ExpressionAttributeValues': {
':new_value': {'S': 'hello world'},
},
'TableName': store.table_name
}
}
]
store.transaction_write(transaction_items, "some_unique_id")
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
awspytools-0.1.1.tar.gz
(4.8 kB
查看哈希)
内置分布
awspytools-0.1.1-py3-none-any.whl
(5.6 kB
查看哈希)
关
awspytools -0.1.1.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 496a4e19943329781c74c3ff5260c6f3c4d658e015ee57882357505481bc9f2d |
|
| MD5 | 6d2a1c66386afae73f3f1d690b32372d |
|
| 布莱克2-256 | 84fbfae418e6a13f335a6b31cb0bdcaf869be0bc78875052ac1c7d0e92ae9c3b |
关
awspytools -0.1.1-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 4a196cd312aa08d68d619b3a6dd410e9d0ffeed1c36a4d6ff67977cb1607856f |
|
| MD5 | c0f9c74a007748c68293eff29a7cd01b |
|
| 布莱克2-256 | 4a5c7f501a9ee501d1a541435cff76f29b587c7e6792eb11932602855e17c499 |