Backend/Django

[파이썬] Django - args, kwargs, mutable, immutable, queryset, object, DB Field, Key

Sungwoo Koo 2022. 6. 19. 04:00

1. args, kwargs를 사용하는 예제 코드

def sum_numbers(*args):
    return sum(args)
    
    
class UserView(APIView):
    def get(self, request):
        numbers = request.data.get("numbers", [])
        result = sum_numbers(*numbers)
        return Response({'sum': result})
        

'''
[input]
{
 "numbers": [1,2,3,4]
} 

[output]
{
    "sum": 10
}
'''

 

 

 

2. mutable과 immutable은 어떤 특성이 있고, 각 특성에 대한 자료형

 

[mutable]

- 값이 변할 수 있다.

- List / Dictionary

 

[immutable]

- 값이 변할 수 없다.

- Number / String / Tuple

 

 

3. DB Field에서 사용되는 Key 종류와 특징

 

기본키 (promary key)

  • 후보키 중에서 선택한 주키(Main Key)
  • 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
  • Null 값을 가질 수 없다.
  • 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다.

후보키 (candidate key)

  • 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별할 수 있는 속성들의 부분집합을 의미한다.
  • 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야 한다.
  • 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 한다.

대체키 (alternate key)

  • 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말한다.
  • 보조키라고도 한다.

슈퍼키 (super key)

  • 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타내지 않는다.
  • 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족시키지 못한다.

외래키 (foreign key)

  • 외래키(FK)는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구로 사용된다.
  • 관계(Relation)를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성이다.
  • 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없다.

 

 

4. django에서 queryset과 object 차이점

 

[queryset]

데이터가 존재하지않더라도 빈리스트로 가져와서 정상 작동됨

.filter('key':value) 사용 시 queryset으로 반환

 

[object]

데이터가 없다면 에러 발생함

.get('key':value) 사용 시 object 형식으로 반환