글
AWS DynamoDB Helper in Python3 1편
IT/Python3
2020. 10. 22. 10:52
반응형
import os
import boto3
import json
import decimal
from boto3.dynamodb.conditions import Key, Attr
from botocore.exceptions import ClientError
"""
AWS DynamoDB 헬퍼 모듈
@desc
파이썬 런타임의 람다가, DynamoDB에 쿼리를 할 수 있게 해주는 헬퍼 모듈
@since 2020-10-22
@author angmond
"""
# DynamoDB 아이템 조회
def get_item(dynamodb_table_name, **key_info):
ddb = boto3.resource('dynamodb')
table = ddb.Table(dynamodb_table_name) #DynamoDB 테이블명
try:
response = table.get_item(
Key={
'PK': key_info["DDB_파티션키!"],
'SK': key_info["DDB_소트키!"]
}
)
except ClientError as e:
print(e.response['Error']['Message'])
return e
else:
item = response['Item']
print("GetItem succeeded:")
print(json.dumps(item, indent=4, cls=DecimalEncoder))
return item
# DynamoDB 아이템 생성
def put_item(dynamodb_table_name, ddb_item):
ddb = boto3.resource('dynamodb')
table = ddb.Table(dynamodb_table_name) #DynamoDB 테이블명
response = table.put_item(
Item = {
'PK': ddb_item.파티션키,
'SK': ddb_item.소트키,
'data1' : ddb_item.데이터1,
'data2' : ddb_item.데이터2,
}
)
return response
# DynamoDB 아이템 조회
def get_item(dynamodb_table_name, **key_info) :
pass
# DynamoDB 아이템 삭제
def delete_item(dynamodb_table_name, **key_info):
pass
# Helper class to convert a DynamoDB item to JSON.
class DecimalEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, decimal.Decimal):
if o % 1 > 0:
return float(o)
else:
return int(o)
return super(DecimalEncoder, self).default(o)
AWS DynamoDB의 트랜잭션 제어를 위해 간단히 만들었던 파이썬3 DDB헬퍼 입니다.
아직 삭제 등 더 구현해야 할 헬퍼 함수가 많지만,
boto3를 이용해, DynamoDB 인터페이스 커넥터를 생성하고, 파티션키/소트키/기타 데이터 등을 조합해 트랜잭션을 진행하는 모듈입니다.
이렇게 보니, 진짜 라이브러리 만드는 사람들 참 대단한거같네요.. 얼마나 수많은 케이스가 있는데, 이런 것을 고려해서 함수나 모듈을 만드는건지... (앙몬드는 글쓰다가도 감탄한댜)
아직은 1편 초짜라서 ,하나하나 추가될 예정입니다 :)
반응형
'IT > Python3' 카테고리의 다른 글
Python3 딕셔너리 엘리먼트 타입의 리스트 아이템 중복제거 (0) | 2020.12.16 |
---|---|
쿠버네티스 노드 관제 커스터마이즈 (0) | 2020.11.06 |
파이썬3 OrderedDict (0) | 2020.10.16 |
파이썬3 콜렉션 내부 엘리먼트 조합 (Combination / Permutation) 사용예시 (0) | 2020.10.16 |
파이썬3 디큐 이용 예시 알고리즘 문제 (0) | 2020.10.16 |