728x90
https://yoo11052.tistory.com/174
DynamoDB가 무엇인지는 위의 블로그에서 잘 나타내주고 있습니다
3줄 요약:
Key-Value 데이터베이스 입니다
서버리스이기에 요청한 만큼만 비용을 지불하면 됩니다.
Django에서 DynamoDB를 사용하기 위해 Amazon Web Services (AWS)의 파이썬 SDK인 boto3를 사용해야 합니다
pip install boto3
def __init__(self, table_name: Optional[str] = None):
session = boto3.session.Session()
self.resource = session.resource('dynamodb')
self.table = None
if table_name:
self.set_table(table_name)
def set_table(self, table_name: str):
self.table = self.resource.Table(table_name)
def put_item(self, key: dict):
return self.table.put_item(Item=key,)
def execute_query(self, keys: Optional[str], condition):
if keys:
return self.table.query(
ProjectionExpression=keys,
KeyConditionExpression=condition,
)
else:
else:
return self.table.query(
KeyConditionExpression=condition,
)
init으로 dynamodb를 설정해주었고 set_table 함수를 만들어 table을 관리하게 만들었습니다.
또 key를 바탕으로 가져오는 작업을 하기 때문에 execute_query를 만들었습니다.
ProjectionExpression: 쿼리의 결과에서 어떤 속성을 가져올지를 정의합니다. Ex)key1, key2, key3 만 가져올 수 있습니다
KeyConditionExpression: 쿼리의 조건을 정의합니다. 이 조건은 주로 테이블의 파티션 키 및 정렬 키를 기반으로 합니다.
ex) Key('pk').eq('value')와 같이 사용합니다. 여기서 'pk'는 파티션 키, 'value'는 파티션 키의 값입니다.
범위 기반은 Key('sk').between('start_value', 'end_value') between을 사용해서 필터링 할 수 있습니다.
예시로 이렇게 사용 가능합니다.
query_result = dynamodb_client.query(
ProjectionExpression='attribute1, attribute2',
KeyConditionExpression=Key('pk').eq('pk로 만들었던 str') & Key('sk').begins_with('시작 변수')
)
GET
dynamodb_client = DynamoDBClient()
dynamodb_client.set_table('테이블 이름')
query_result = dynamodb_client.execute_query(
Key('pk').eq('pk로 만들어둔 str')
)
return [
dict(
item['해당 value'],
item['해당 value'],
item['해당 value'],
)
for item
in sorted(query_result['Items'], key=lambda i: int(i.get('priority', 999)))
]
post
def post():
dynamodb_client = DynamoDBClient()
dynamodb_client.set_table('테이블 바라보게 만들기')
dynamodb_client.put_item(dict(
pk='pk값',
item_key='값',
item_key='값',
item_key='값',
)
'Django > orm' 카테고리의 다른 글
update_or_create (0) | 2024.06.28 |
---|---|
Dynamdb() Scan vs query (0) | 2024.02.06 |
Django date range (0) | 2024.02.01 |
F() (0) | 2024.01.24 |
len() vs count() (0) | 2024.01.19 |