DynamoDB()

2024. 2. 5. 15:50· Django/orm
목차
  1. GET
  2. post
728x90

https://yoo11052.tistory.com/174

 

[AWS] DynamoDB란

DynamoDB DynamoDB는 AWS에서 제공하는 서버리스 기반 Key-Value NoSQL 데이터베이스입니다. DynamoDB를 사용하면 높은 성능과 비용적인 측면에서 이점을 가져올 수 있습니다. DynamoDB 특징 NoSQL 데이터베이스

yoo11052.tistory.com

 

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
  1. GET
  2. post
'Django/orm' 카테고리의 다른 글
  • update_or_create
  • Dynamdb() Scan vs query
  • Django date range
  • F()
두잇 두두
두잇 두두
읽기 쉬운 코드를 짜기 위해 노력합니다. 좋은 코드는 단순하고 이해하기 쉬워야 한다고 생각합니다.
두잇 두두
두두 DB
두잇 두두
전체
오늘
어제
  • 분류 전체보기 (135)
    • CS지식 (7)
    • 시스템 설계 (5)
    • 자료구조&알고리즘 (36)
      • 자료구조 (1)
      • 백준 (13)
      • 프로그래머스 (15)
      • 인프런 (2)
    • Python (9)
      • Docs (3)
      • 실험실 (2)
    • Django (36)
      • orm (10)
      • view (3)
      • model (3)
      • admin (3)
      • restframework (13)
      • error (1)
      • utils (2)
    • Java (2)
      • JPA (3)
    • AI (1)
      • AI가 쓴 글 (1)
    • Git (4)
    • Linux (1)
    • 개발자로써 (8)
      • 회고 (1)
    • 문화생활 (0)
      • 여행 (0)
    • 도서📚 (0)
      • 일반 도서 (0)
      • 개발 도서 (0)
    • 프론트 (1)
      • snippet (1)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
두잇 두두
DynamoDB()
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.