[AWS DynamoDB] PynamoDB 기본 사용법 정리(CRUD)

2023. 5. 8. 11:02개발을 파헤치다/서버 인프라

반응형

 

PynamoDB는 AWS의 DynamoDB를 Python에서 좀 더 쉽게 사용할 수 있도록 해주는 ORM 라이브러리입니다.

PynamoDB를 통해서 table 생성을 비롯한 쿼리, 아이템 생성 등 기본적인 DB 데이터 조작을 할 수 있는데요.

이번에는 그 기본이 될 수 있는 item 생성 및 수정 삭제에 대해서 알아보도록 하겠습니다.

Model 사용하기

PynamoDB를 사용해서 기본적인 CRUD(Create, Read, Update, Delete)를 하는 방법을 살펴보겠습니다.
먼저 테스트용 Model을 아래와 같이 생성합니다.


from pynamodb.models import Model

class TestModel(Model):

    class Meta:
        region = "ap-northeast-2"
        table_name = "test_table"
        billing_mode = "PAY_PER_REQUEST"
        
    pk = UnicodeAttribute(hash_key=True)
    attr_1 = NumberAttribute(default=0)
    attr_2 = UnicodeAttribute(null=True)

 

item 생성하기

이제 위 TestModel에 새로운 아이템을 생성합니다.

item = TestModel()
item.pk = uuid.uuid1()
item.attr_1 = 10
item.attr_2 = "attr2"
item.save()

반드시 save 메서드를 호출해야 DB에 적용(commit)됩니다.

item 수정하기

DynamoDB에서는 transaction을 비롯한 atomic operation을 지원하는데요.
item update의 경우 atomic하게 item을 수정하는 것이 가능합니다. 또한, hash_key에 해당하는 item이 존재하지 않으면 생성까지 해줍니다.

item = TestModel.get(hash_key=id)
item.update(actions=[
    TestModel.attr_1.set(20),
    TestModel.attr_2.set("value")
])

 

item 삭제

item = TestModel.get(hash_key=key)
item.delete()

item 가져오기

item = TestModel.get(hash_key=key)

hash key값 혹은 hash key와 range key를 활용해서 특정 아이템을 가져올 수 있습니다.

반응형